Rev 7911 | Rev 7984 | 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; |
6919 | leency | 33 | int btn; |
7771 | leency | 34 | proc_info Form; |
7981 | leency | 35 | @SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE); |
36 | @SetWindowLayerBehaviour(-1, ZPOS_ALWAYS_TOP); |
||
37 | loop() switch(@WaitEvent()) |
||
6919 | leency | 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: |
||
7981 | leency | 51 | btn = @GetButtonID(); |
52 | if (btn == BUTTON_CLOSE) ExitProcess(); |
||
53 | if (btn == BUTTON_COPY) EventCopyHex(); |
||
54 | if (btn == BUTTON_PICK) pick_active = true; |
||
6919 | leency | 55 | break; |
56 | |||
57 | case evKey: |
||
7981 | leency | 58 | key_scancode = @GetKeyScancode(); |
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 | |||
7981 | leency | 77 | DrawRectangle(PICKED_X-2, PICKED_PADDING-2, PICKED_SIZE+3, PICKED_SIZE+3, 0xCBC6C5); |
78 | DefineHiddenButton(PICKED_X-1, PICKED_PADDING-1, PICKED_SIZE+1, PICKED_SIZE+1, BUTTON_PICK); |
||
6919 | leency | 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; |
||
7981 | leency | 89 | strlcpy(buf,"000000",6); |
90 | buf+=6; |
||
7768 | leency | 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 | str2col(#picked_color_string, picked_color); |
6919 | leency | 104 | rgb.DwordToRgb(picked_color); |
7089 | leency | 105 | |
7981 | leency | 106 | WriteTextWithBg(12,12, 0xD0, 0x000111, #picked_color_string, 0xFFFfff); |
6919 | leency | 107 | |
108 | WriteNumber(12,33, 0xD0, 0xff0000, 3, rgb.r); |
||
7771 | leency | 109 | WriteNumber(44,33, 0xD0, 0x008000, 3, rgb.g); |
110 | WriteNumber(75,33, 0xD0, 0x0000ff, 3, rgb.b); |
||
6919 | leency | 111 | |
7981 | leency | 112 | DrawBar(PICKED_X, PICKED_PADDING, PICKED_SIZE, PICKED_SIZE, picked_color); |
6919 | leency | 113 | } |
114 | |||
7771 | leency | 115 | void DrawCopyButton(dword _x, _y, _w, _h) |
6919 | leency | 116 | { |
7981 | leency | 117 | DefineHiddenButton(_x+1, _y+1, _w-2, _h-2, BUTTON_COPY); |
7771 | leency | 118 | DrawRectangle(_x, _y, _w, _h, 0x777777); |
119 | WriteText(_x+6, _h-8/2 + _y, 0x80, 0x555555, "Copy"); |
||
6919 | leency | 120 | } |
121 | |||
7037 | leency | 122 | void EventCopyHex() |
6919 | leency | 123 | { |
7981 | leency | 124 | Clipboard__CopyText(#picked_color_string); |
7037 | leency | 125 | } |