Rev 7981 | Rev 9693 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7771 | leency | 1 | #define MEMSIZE 1024*20 |
6919 | leency | 2 | |
3 | #include "../lib/gui.h" |
||
4 | #include "../lib/clipboard.h" |
||
5 | #include "../lib/patterns/rgb.h" |
||
6 | |||
7 | //===================================================// |
||
8 | // // |
||
9 | // DATA // |
||
10 | // // |
||
11 | //===================================================// |
||
12 | |||
7981 | leency | 13 | dword picked_color; |
14 | char picked_color_string[7]; |
||
6919 | leency | 15 | #define FORM_W 167 |
16 | #define FORM_H 60 |
||
7981 | leency | 17 | #define PICKED_SIZE 42 |
18 | #define PICKED_PADDING FORM_H - PICKED_SIZE / 2 |
||
19 | #define PICKED_X FORM_W - PICKED_SIZE - PICKED_PADDING |
||
20 | #define BUTTON_CLOSE 1 |
||
21 | #define BUTTON_COPY 2 |
||
22 | #define BUTTON_PICK 3 |
||
6919 | leency | 23 | |
24 | //===================================================// |
||
25 | // // |
||
26 | // CODE // |
||
27 | // // |
||
28 | //===================================================// |
||
29 | |||
30 | void main() |
||
31 | { |
||
7981 | leency | 32 | bool pick_active = true; |
7771 | leency | 33 | proc_info Form; |
7981 | leency | 34 | @SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE); |
35 | @SetWindowLayerBehaviour(-1, ZPOS_ALWAYS_TOP); |
||
36 | loop() switch(@WaitEvent()) |
||
6919 | leency | 37 | { |
38 | case evMouse: |
||
7771 | leency | 39 | mouse.get(); |
40 | if (mouse.x>0) && (mouse.x |
||
6919 | leency | 41 | EventDragWindow(); |
7771 | leency | 42 | } else if (pick_active) { |
6919 | leency | 43 | picked_color = GetPixelColorFromScreen(mouse.x + Form.left, mouse.y + Form.top); |
44 | EventUpdateWindowContent(); |
||
45 | if (mouse.down) && (mouse.key&MOUSE_LEFT) pick_active = false; |
||
46 | } |
||
47 | break; |
||
48 | |||
49 | case evButton: |
||
7984 | leency | 50 | @GetButtonID(); |
51 | if (EAX == BUTTON_CLOSE) ExitProcess(); |
||
52 | if (EAX == BUTTON_COPY) EventCopyHex(); |
||
53 | if (EAX == BUTTON_PICK) pick_active = true; |
||
6919 | leency | 54 | break; |
55 | |||
56 | case evKey: |
||
7984 | leency | 57 | @GetKeyScancode(); |
58 | if (AL == SCAN_CODE_ESC) @ExitProcess(); |
||
59 | if (AL == SCAN_CODE_KEY_C) EventCopyHex(); |
||
6919 | leency | 60 | break; |
61 | |||
62 | case evReDraw: |
||
7771 | leency | 63 | DefineUnDragableWindow(215, 100, FORM_W, FORM_H); |
64 | GetProcessInfo(#Form, SelfInfo); |
||
6919 | leency | 65 | draw_window(); |
66 | } |
||
67 | } |
||
68 | |||
69 | void draw_window() |
||
70 | { |
||
71 | DrawRectangle3D(0, 0, FORM_W, FORM_H, 0xCCCccc, 0x888888); |
||
72 | DrawRectangle3D(1, 1, FORM_W-2, FORM_H-2, 0xCCCccc, 0x888888); |
||
73 | DrawBar(2,2,FORM_W-3,FORM_H-3,0xFFFfff); |
||
74 | |||
7981 | leency | 75 | DrawRectangle(PICKED_X-2, PICKED_PADDING-2, PICKED_SIZE+3, PICKED_SIZE+3, 0xCBC6C5); |
76 | DefineHiddenButton(PICKED_X-1, PICKED_PADDING-1, PICKED_SIZE+1, PICKED_SIZE+1, BUTTON_PICK); |
||
6919 | leency | 77 | |
7771 | leency | 78 | DrawCopyButton(67, 11, 35, 14); |
6919 | leency | 79 | |
80 | EventUpdateWindowContent(); |
||
81 | } |
||
82 | |||
7768 | leency | 83 | //copy of sprintf() => %A |
84 | void str2col(dword buf, number) |
||
85 | { |
||
86 | byte s; |
||
7981 | leency | 87 | strlcpy(buf,"000000",6); |
88 | buf+=6; |
||
7768 | leency | 89 | while(number) |
90 | { |
||
91 | $dec buf |
||
92 | s=number&0xF; |
||
93 | if(s>9)DSBYTE[buf]='A'+s-10; |
||
94 | else DSBYTE[buf]='0'+s; |
||
95 | number>>=4; |
||
96 | } |
||
97 | } |
||
98 | |||
6919 | leency | 99 | void EventUpdateWindowContent() |
100 | { |
||
7768 | leency | 101 | str2col(#picked_color_string, picked_color); |
6919 | leency | 102 | rgb.DwordToRgb(picked_color); |
7089 | leency | 103 | |
7981 | leency | 104 | WriteTextWithBg(12,12, 0xD0, 0x000111, #picked_color_string, 0xFFFfff); |
6919 | leency | 105 | |
106 | WriteNumber(12,33, 0xD0, 0xff0000, 3, rgb.r); |
||
7771 | leency | 107 | WriteNumber(44,33, 0xD0, 0x008000, 3, rgb.g); |
108 | WriteNumber(75,33, 0xD0, 0x0000ff, 3, rgb.b); |
||
6919 | leency | 109 | |
7981 | leency | 110 | DrawBar(PICKED_X, PICKED_PADDING, PICKED_SIZE, PICKED_SIZE, picked_color); |
6919 | leency | 111 | } |
112 | |||
7771 | leency | 113 | void DrawCopyButton(dword _x, _y, _w, _h) |
6919 | leency | 114 | { |
7981 | leency | 115 | DefineHiddenButton(_x+1, _y+1, _w-2, _h-2, BUTTON_COPY); |
7771 | leency | 116 | DrawRectangle(_x, _y, _w, _h, 0x777777); |
117 | WriteText(_x+6, _h-8/2 + _y, 0x80, 0x555555, "Copy"); |
||
6919 | leency | 118 | } |
119 | |||
7037 | leency | 120 | void EventCopyHex() |
6919 | leency | 121 | { |
7981 | leency | 122 | Clipboard__CopyText(#picked_color_string); |
7037 | leency | 123 | } |