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