27 lines
885 B
Plaintext
27 lines
885 B
Plaintext
#palletteSize = 128
|
|
Procedure.f XorPattern(x, y) ;compute the gradient value from the pixel values
|
|
Protected result = x ! y
|
|
ProcedureReturn Mod(result, #palletteSize) / #palletteSize
|
|
EndProcedure
|
|
|
|
Procedure drawPattern()
|
|
StartDrawing(ImageOutput(0))
|
|
DrawingMode(#PB_2DDrawing_Gradient)
|
|
CustomGradient(@XorPattern())
|
|
;specify a gradient pallette from which only specific indexes will be used
|
|
For i = 1 To #palletteSize
|
|
GradientColor(1 / i, i * $BACE9B) ; or alternatively use $BEEFDEAD
|
|
Next
|
|
Box(0, 0, ImageWidth(0), ImageHeight(0))
|
|
StopDrawing()
|
|
EndProcedure
|
|
|
|
If OpenWindow(0, 0, 0, 128, 128, "XOR Pattern", #PB_Window_SystemMenu)
|
|
CreateImage(0, WindowWidth(0), WindowHeight(0))
|
|
drawPattern()
|
|
ImageGadget(0, 0, 0, ImageWidth(0), ImageHeight(0), ImageID(0))
|
|
Repeat
|
|
event = WaitWindowEvent(20)
|
|
Until event = #PB_Event_CloseWindow
|
|
EndIf
|