|
| 1 | +from winim import HIWORD, LOWORD |
| 2 | +import fltk_main |
| 3 | + |
| 4 | +# test of: |
| 5 | +# icon = Fl_File_IconNew(patter, type, size, data) |
| 6 | + |
| 7 | +# The Fl_File_Icon class is a container for vector graphics. |
| 8 | +# You can create and use your own vector images. |
| 9 | + |
| 10 | +# bottom, left is the vertex position 0, 0 |
| 11 | +# the center is the vertex position 5000, 5000 |
| 12 | +# right , top is the vertex position 10000, 10000 |
| 13 | + |
| 14 | +#~ {. emit: """ |
| 15 | +#~ #define DOP_COLOR(col) HIWORD(col), LOWORD(col) |
| 16 | +#~ """ .} |
| 17 | + |
| 18 | +template DOP_COLOR(col: untyped):untyped= |
| 19 | + (HIWORD(col), LOWORD(col)) |
| 20 | + |
| 21 | +#~ template DOP_COLOR*(col: untyped): untyped = |
| 22 | + #~ HIWORD(col) |
| 23 | + #~ LOWORD(col) |
| 24 | + |
| 25 | +var opcodes: array[0, short] = [ |
| 26 | + FL_DOP_COLOR , HIWORD(FL_RED), LOWORD(FL_RED), |
| 27 | + FL_DOP_LINE , |
| 28 | + FL_DOP_VERTEX, 0, 0, |
| 29 | + FL_DOP_VERTEX, 10000, 10000, |
| 30 | + FL_DOP_END , |
| 31 | + FL_DOP_COLOR , FL_DATAOPCODE(HIWORD(FL_GREEN)), FL_DATAOPCODE(LOWORD(FL_GREEN)), |
| 32 | + FL_DOP_LINE , |
| 33 | + FL_DOP_VERTEX, 0, 10000, |
| 34 | + FL_DOP_VERTEX, 10000, 0, |
| 35 | + FL_DOP_END , |
| 36 | + FL_DOP_COLOR , FL_DATAOPCODE(HIWORD(FL_BLUE)), FL_DATAOPCODE(LOWORD(FL_BLUE)), |
| 37 | + FL_DOP_LINE , |
| 38 | + FL_DOP_VERTEX, 0, 5000, |
| 39 | + FL_DOP_VERTEX, 10000, 5000, |
| 40 | + FL_DOP_END , |
| 41 | + FL_DOP_COLOR , FL_DATAOPCODE(HIWORD(Fl_DARK_YELLOW)), FL_DATAOPCODE(LOWORD(Fl_DARK_YELLOW)), |
| 42 | + FL_DOP_POLYGON , |
| 43 | + FL_DOP_VERTEX, 1000, 1000, |
| 44 | + FL_DOP_VERTEX, 1000, 9000, |
| 45 | + FL_DOP_VERTEX, 9000, 9000, |
| 46 | + FL_DOP_VERTEX, 9000, 1000, |
| 47 | + FL_DOP_VERTEX, 1000, 1000, |
| 48 | + # opposite direction = hole |
| 49 | + FL_DOP_VERTEX, 1500, 1500, |
| 50 | + FL_DOP_VERTEX, 8500, 1500, |
| 51 | + FL_DOP_VERTEX, 8500, 8500, |
| 52 | + FL_DOP_VERTEX, 1500, 8500, |
| 53 | + FL_DOP_VERTEX, 1500, 1500, |
| 54 | + FL_DOP_END |
| 55 | +] #] |
| 56 | + |
| 57 | +proc ButtonCB (self: ptr Fl_Widget, btn: ptr any) {.cdecl.} = |
| 58 | + flMessageTitle "ButtonCB" |
| 59 | + flMessage "you pressed the button." |
| 60 | + |
| 61 | +proc SliderCB cdecl (self: ptr Fl_Widget, sld: ptr any) |
| 62 | + var win = Fl_WidgetWindow(self) |
| 63 | + var btn = Fl_WidgetGetUserdata(win) |
| 64 | + var size = Fl_ValuatorGetValue(sld) |
| 65 | + Fl_WidgetResize btn, 256-size*0.5, 256-size*0.5, size, size |
| 66 | + Fl_WidgetRedraw win |
| 67 | + |
| 68 | +# |
| 69 | +# main |
| 70 | +# |
| 71 | +Fl_SetScheme "plastic" |
| 72 | +Fl_SetScheme "gleam" |
| 73 | +# create icon by array of vector opcodes |
| 74 | +var icn = Fl_File_IconNew("", FL_FILEICON_ANY, high(opcodes), opcodes) |
| 75 | +var win = Fl_Double_WindowNew(512, 512+50, "Fl_File_Icon03.nim") |
| 76 | +Fl_WidgetSetColor win, Fl_RGB_Color(128, 128, 128) |
| 77 | +var btn = Fl_ButtonNew(0, 0, 512, 512) |
| 78 | +Fl_WidgetSetColor btn, Fl_RGB_Color(128, 128, 128) |
| 79 | +Fl_WidgetSetCallbackArg btn, ButtonCB, btn |
| 80 | +Fl_File_IconLabel icn, btn |
| 81 | + |
| 82 | +Fl_WidgetSetUserdata win, btn |
| 83 | + |
| 84 | +var sld = Fl_Hor_Value_SliderNew(10, 512, 492, 30, "scale") |
| 85 | +Fl_WidgetSetColor sld, Fl_RGB_Color(128, 128, 128) |
| 86 | +Fl_WidgetSetSelectionColor sld, Fl_RGB_Color(128, 128, 128) |
| 87 | + |
| 88 | +Fl_WidgetSetCallbackArg sld, SliderCB, sld |
| 89 | +Fl_ValuatorBounds sld, 8, 512 |
| 90 | +Fl_ValuatorSetValue sld, 256 |
| 91 | +SliderCB sld, sld |
| 92 | + |
| 93 | + |
| 94 | +Fl_WindowShow win |
| 95 | +Fl_Run() |
0 commit comments