Rev 8389 | Rev 9015 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8752 | leency | 1 | #define MEMSIZE 1024 * 40 |
5598 | pavelyakov | 2 | #include "../lib/kolibri.h" |
3 | #include "../lib/strings.h" |
||
4 | #include "../lib/mem.h" |
||
5 | #include "../lib/gui.h" |
||
5520 | leency | 6 | |
7220 | leency | 7 | #include "../lib/obj/libimg.h" |
7224 | leency | 8 | #include "../lib/obj/box_lib.h" |
7245 | leency | 9 | #include "../lib/obj/proc_lib.h" |
7220 | leency | 10 | |
5520 | leency | 11 | #ifndef AUTOBUILD |
12 | #include "lang.h--" |
||
13 | #endif |
||
14 | |||
7221 | leency | 15 | /* === TRANSLATIONS === */ |
16 | |||
17 | #ifdef LANG_RUS |
||
7783 | leency | 18 | ?define T_TAKE_SCREENSHOT "Сделать скриншот" |
7245 | leency | 19 | ?define T_SETTINGS "Настройки" |
7783 | leency | 20 | ?define T_EDITBOX_FRAME "Путь сохранения скриншота" |
7245 | leency | 21 | ?define T_DELAY "Задержка в секундах" |
22 | ?define T_NO_DIR "'Папка не существует!' -E" |
||
7221 | leency | 23 | #else |
7783 | leency | 24 | ?define T_TAKE_SCREENSHOT "Take a screenshot" |
7245 | leency | 25 | ?define T_SETTINGS "Settings" |
7783 | leency | 26 | ?define T_EDITBOX_FRAME "Save path" |
7245 | leency | 27 | ?define T_DELAY "Delay in seconds" |
28 | ?define T_NO_DIR "'Directory does not exists!' -E" |
||
7221 | leency | 29 | #endif |
30 | |||
7235 | leency | 31 | /* === DATA === */ |
5520 | leency | 32 | |
33 | proc_info Form; |
||
34 | |||
7220 | leency | 35 | enum { |
36 | BTN_MAKE_SCREENSHOT=10, |
||
7783 | leency | 37 | BTN_SETTINGS, |
38 | BTN_CHOOSE_SAVING_PATH |
||
7220 | leency | 39 | }; |
5520 | leency | 40 | |
7224 | leency | 41 | #define PD 18 //padding |
7783 | leency | 42 | #define SETTINGS_Y PD+PD+30+10 |
7220 | leency | 43 | |
7245 | leency | 44 | char save_path[4096]; |
7224 | leency | 45 | |
7783 | leency | 46 | more_less_box delay = { 1, 0, SETTINGS_Y, T_DELAY }; |
47 | edit_box edit_save = {260,PD,SETTINGS_Y+50,0xffffff,0x94AECE,0xFFFfff,0xffffff, |
||
7506 | leency | 48 | 0x10000000,sizeof(save_path)-2,#save_path,0, 0b}; |
7244 | leency | 49 | |
7783 | leency | 50 | bool show_settings = false; |
7244 | leency | 51 | |
7245 | leency | 52 | opendialog open_folder_dialog = |
53 | { |
||
54 | 2, //0-file, 2-save, 3-select folder |
||
7783 | leency | 55 | #Form, |
7245 | leency | 56 | #communication_area_name, |
57 | 0, |
||
58 | 0, //dword opendir_path, |
||
8752 | leency | 59 | #save_path, //dword dir_default_path, |
7245 | leency | 60 | #open_dialog_path, |
7783 | leency | 61 | #DrawWindow, |
7245 | leency | 62 | 0, |
8752 | leency | 63 | #save_path, //dword openfile_path, |
7245 | leency | 64 | 0, //dword filename_area, |
65 | 0, //dword filter_area, |
||
66 | 420, |
||
67 | NULL, |
||
68 | 320, |
||
69 | NULL |
||
70 | }; |
||
71 | |||
5520 | leency | 72 | /* === CODE === */ |
73 | |||
7783 | leency | 74 | void init_libraries() |
75 | { |
||
7221 | leency | 76 | load_dll(libimg, #libimg_init, 1); |
7224 | leency | 77 | load_dll(boxlib, #box_lib_init,0); |
7245 | leency | 78 | load_dll(Proc_lib, #OpenDialog_init,0); |
7783 | leency | 79 | OpenDialog_init stdcall (#open_folder_dialog); |
80 | } |
||
7221 | leency | 81 | |
7783 | leency | 82 | void main() |
83 | { |
||
84 | int id; |
||
5520 | leency | 85 | |
7783 | leency | 86 | init_libraries(); |
7245 | leency | 87 | |
8752 | leency | 88 | edit_box_set_text stdcall (#edit_save, "/tmp0/1"); |
7783 | leency | 89 | |
7984 | leency | 90 | @SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
91 | loop() switch(@WaitEvent()) |
||
5520 | leency | 92 | { |
7783 | leency | 93 | case evMouse: |
94 | edit_box_mouse stdcall (#edit_save); |
||
95 | break; |
||
96 | |||
7220 | leency | 97 | case evButton: |
7984 | leency | 98 | id = @GetButtonID(); |
7783 | leency | 99 | switch(id){ |
8752 | leency | 100 | case CLOSE_BTN: @ExitProcess(); |
7783 | leency | 101 | case BTN_MAKE_SCREENSHOT: EventTakeScreenshot(); break; |
102 | case BTN_SETTINGS: EventClickSettings(); break; |
||
103 | case BTN_CHOOSE_SAVING_PATH: EventChooseSavePath(); break; |
||
104 | default: delay.click(id); |
||
105 | } |
||
7220 | leency | 106 | break; |
107 | |||
108 | case evKey: |
||
8752 | leency | 109 | @GetKey(); |
7984 | leency | 110 | edit_box_key stdcall (#edit_save); |
111 | EAX >>= 16; |
||
112 | if (SCAN_CODE_ENTER == AL) EventTakeScreenshot(); |
||
113 | if (SCAN_CODE_ESC == AL) ExitProcess(); |
||
7220 | leency | 114 | break; |
115 | |||
116 | case evReDraw: |
||
7783 | leency | 117 | DrawWindow(); |
7220 | leency | 118 | } |
5520 | leency | 119 | } |
120 | |||
7783 | leency | 121 | |
122 | void DrawWindow() |
||
7224 | leency | 123 | { |
7783 | leency | 124 | int i; |
125 | |||
7806 | leency | 126 | sc.get(); |
7783 | leency | 127 | DefineAndDrawWindow(screen.width-400, screen.height/3, 270, |
7806 | leency | 128 | skin_height + 30+PD+PD, 0x34, sc.work, "EasyShot",0); |
7783 | leency | 129 | GetProcessInfo(#Form, SelfInfo); |
130 | |||
131 | DrawCaptButton(PD, PD, 170, 28, BTN_MAKE_SCREENSHOT, 0x0090B8, 0xFFFfff, T_TAKE_SCREENSHOT); |
||
7806 | leency | 132 | DefineButton(PD+170+20, PD, 35, 28, BTN_SETTINGS, sc.button); |
133 | for (i=0; i<=2; i++) DrawBar(PD+170+30, i*5+PD+9, 15, 2, sc.button_text); |
||
7783 | leency | 134 | delay.draw(PD, SETTINGS_Y); |
135 | DrawFileBox(#edit_save, T_EDITBOX_FRAME, BTN_CHOOSE_SAVING_PATH); |
||
7224 | leency | 136 | } |
137 | |||
7783 | leency | 138 | |
139 | void EventChooseSavePath() |
||
140 | { |
||
141 | OpenDialog_start stdcall (#open_folder_dialog); |
||
142 | if (open_folder_dialog.status) { |
||
8752 | leency | 143 | edit_box_set_text stdcall (#edit_save, #save_path); |
7783 | leency | 144 | } |
5520 | leency | 145 | } |
146 | |||
7783 | leency | 147 | |
148 | void EventClickSettings() |
||
7220 | leency | 149 | { |
7783 | leency | 150 | show_settings ^= 1; |
8752 | leency | 151 | @MoveSize(OLD, OLD, show_settings*75 + 270, |
7783 | leency | 152 | show_settings*110 + skin_height + PD+PD+30); |
153 | } |
||
154 | |||
155 | |||
156 | void EventTakeScreenshot() |
||
157 | { |
||
7221 | leency | 158 | int i=0; |
159 | char save_file_name[4096]; |
||
7783 | leency | 160 | static dword screenshot; |
161 | |||
162 | if (!screenshot) screenshot = malloc(screen.width * screen.height * 3); |
||
163 | |||
7221 | leency | 164 | do { |
165 | i++; |
||
7783 | leency | 166 | //sprintf(, "%s/screen_%i.png", #save_path, i); |
167 | strcpy(#save_file_name, #save_path); |
||
168 | if (save_file_name[strlen(#save_file_name)-1]!='/') chrcat(#save_file_name, '/'); |
||
169 | strcat(#save_file_name, "screen_"); |
||
7771 | leency | 170 | strcat(#save_file_name, itoa(i)); |
171 | strcat(#save_file_name, ".png"); |
||
7221 | leency | 172 | } while (file_exists(#save_file_name)); |
7220 | leency | 173 | |
7783 | leency | 174 | if (!dir_exists(#save_path)) { |
175 | notify(T_NO_DIR); |
||
176 | return; |
||
7220 | leency | 177 | } |
178 | |||
7783 | leency | 179 | MinimizeWindow(); |
180 | pause(delay.value*100); |
||
181 | CopyScreen(screenshot, 0, 0, screen.width, screen.height); |
||
182 | save_image(screenshot, screen.width, screen.height, #save_file_name); |
||
183 | ActivateWindow(GetProcessSlot(Form.ID)); |
||
7245 | leency | 184 | }=2;> |
185 |