Subversion Repositories Kolibri OS

Rev

Rev 8227 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
255 heavyiron 1
;*******************************************************
2
;**************GRAPHICS EDITOR ANIMAGE *****************
3
;*******************************************************
6741 IgorA 4
; version: 1.52
5
; last update:  23.11.2016
6
; changes:      Can save *.png files
7
; autors:       IgorA
8
;--------------------------------------------------------
6367 leency 9
; version: 1.51
10
; last update:  23.03.2016
11
; changes:      Use library 'kmenu.obj', update GUI
12
; autors:       IgorA, Veliant, Leency
6359 IgorA 13
;--------------------------------------------------------
6328 IgorA 14
; version: 1.4
6359 IgorA 15
; last update:  12.03.2016
6328 IgorA 16
; changes:      Use library 'libimg.obj'
6359 IgorA 17
; autors:       IgorA
6328 IgorA 18
;--------------------------------------------------------
6359 IgorA 19
; version: 1.3
20
; last update:  05.10.2010
1643 mario79 21
; written by:   Marat Zakiyanov aka Mario79, aka Mario
22
; changes:      Fixed window flicker when redrawing,
23
;               Fixed memory leak for stack
24
;--------------------------------------------------------
6359 IgorA 25
; version: 1.2
26
; last update:  30.09.2010
1632 mario79 27
; written by:   Marat Zakiyanov aka Mario79, aka Mario
28
; changes:      Program used function 68 instead 64 is now,
29
;               select path with OpenDialog
30
;--------------------------------------------------------
6359 IgorA 31
; version: 1.1
32
; last update:  09.12.2006
33
; autors:
255 heavyiron 34
; programming by andrew_programmer
1632 mario79 35
; design by golus
255 heavyiron 36
 
180 heavyiron 37
use32
8227 IgorA 38
org     0
6837 hidnplayr 39
        db 'MENUET01'
40
        dd 1, START, IM_END, I_END
41
        dd stacktop, file_path, cur_dir_path
255 heavyiron 42
 
6360 IgorA 43
include '../../../config.inc' ;for nightbuild
6837 hidnplayr 44
include '../../../macros.inc'
6328 IgorA 45
include '../../../proc32.inc'
46
include '../../../KOSfuncs.inc'
8227 IgorA 47
include '../../../load_lib.mac'
6328 IgorA 48
include '../../../dll.inc'
6837 hidnplayr 49
include '../../../develop/libraries/libs-dev/libio/libio.inc'
6741 IgorA 50
include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
6385 IgorA 51
;include '../../../debug.inc'
6328 IgorA 52
 
8227 IgorA 53
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
6328 IgorA 54
 
6357 IgorA 55
;---------------------------------------------------------
56
; *** константы для интерфейса ***
6358 IgorA 57
; *** constants for interface  ***
6357 IgorA 58
 
6358 IgorA 59
; корректировки на скин
6359 IgorA 60
ci_offs_skin_w equ  5 ;корректировка на ширину рамки скина
61
ci_offs_skin_h equ 24 ;корректировка на высоту скина
6358 IgorA 62
 
63
; главное окно
64
ci_wnd_min_siz_x equ 585 ;minimum size x
65
ci_wnd_min_siz_y equ 400 ;minimum size y
66
 
6359 IgorA 67
; панель инструментов
6371 IgorA 68
ci_panel_x_pos equ  0 ;коорд. x для панели
69
ci_panel_y_pos equ 20 ;коорд. y для панели
70
ci_panel_but_y1 equ ci_panel_y_pos +5 ;коорд. y для 1-го ряда кнопок
71
ci_panel_but_y2 equ ci_panel_y_pos+30 ;коорд. y для 2-го ряда кнопок
72
ci_palete_y_pos equ ci_panel_y_pos+51 ;коорд. y для палитры цветов
73
ci_panel_zoom_x equ 178 ;коорд. x для кнопок панели масштаба
6359 IgorA 74
 
6357 IgorA 75
; окно редактора
6371 IgorA 76
ci_edit_wnd_x_pos  equ  0 ;коорд. x для окна редактора
77
ci_edit_wnd_y_pos  equ 71 ;коорд. y для окна редактора
6357 IgorA 78
ci_edit_wnd_border equ  3 ;рамка вокруг окна редактора
79
 
80
; скроллинги
6358 IgorA 81
ci_scroll_dim equ 22 ;размеры скроллингов
6357 IgorA 82
ci_scrollh_coord_x_min equ (ci_edit_wnd_x_pos+3) ;минимальная позиция ползунка
6837 hidnplayr 83
        ;горизонтального скроллинга
6357 IgorA 84
ci_scrollv_coord_y_min equ (ci_edit_wnd_y_pos+3) ;минимальная позиция ползунка
6837 hidnplayr 85
        ;вертикального скроллинга
6357 IgorA 86
;---------------------------------------------------------
87
 
6837 hidnplayr 88
include 'bmplib.inc'
89
include 'dialog2.inc'
90
include 'design.inc'
91
include 'graphlib.inc'
255 heavyiron 92
 
6837 hidnplayr 93
include 'cursors.inc'
94
include 'memory.inc'
95
include 'load_from_parameters.inc'
255 heavyiron 96
 
180 heavyiron 97
START:
6837 hidnplayr 98
        mcall SF_SYS_MISC,SSF_HEAP_INIT
99
        mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, syscolors, syscolors_end-syscolors
100
 
1632 mario79 101
load_libraries l_libs_start,end_l_libs
180 heavyiron 102
 
6837 hidnplayr 103
        cmp     eax,-1
104
        jz      close
6357 IgorA 105
 
6837 hidnplayr 106
        mcall SF_SET_EVENTS_MASK,0x80000067 ; 1100111b
180 heavyiron 107
;---------------------------------------------------------
255 heavyiron 108
;-----------------------init data-------------------------
180 heavyiron 109
;---------------------------------------------------------
6837 hidnplayr 110
include 'init_data.inc'
1632 mario79 111
 
180 heavyiron 112
;----------------------------------------------------------
113
;--------get memory and draw window of program-------------
114
;----------------------------------------------------------
6837 hidnplayr 115
        call GetMemory
116
        mov     [Current_instrument],10 ;pencil
117
        call TakeButtonInstruments  ;set startup instrument
118
        call cleare_work_arrea
119
        call load_icons
120
        call init_main_menu
255 heavyiron 121
 
6329 IgorA 122
;load cursors
6837 hidnplayr 123
        mov     eax,CursorsID
124
        call load_cursors
255 heavyiron 125
 
126
;---------------------------------------------------------
6364 IgorA 127
;---------check loading of file from parameters-----------
255 heavyiron 128
;---------------------------------------------------------
6837 hidnplayr 129
        mov     eax,file_path
130
        cmp [eax],byte 0
131
        jz @f
132
        call load_picture
133
        call MovePictureToWorkScreen
1632 mario79 134
@@:
255 heavyiron 135
 
1632 mario79 136
;---------------------------------------------------------------------
6837 hidnplayr 137
        mov     edi,filename_area
138
        mov     esi,path4+5
139
        call    copy_str_1
1632 mario79 140
 
6837 hidnplayr 141
        mov     edi,file_path
142
        cmp     [edi],byte 0
143
        jne     @f
144
        mov     esi,path4
145
        call    copy_str_1
1632 mario79 146
@@:
6837 hidnplayr 147
;OpenDialog     initialisation
148
        stdcall [OpenDialog_Init], OpenDialog_data
8271 IgorA 149
        stdcall [ColorDialog_Init], ColorDialog_data
1632 mario79 150
;---------------------------------------------------------------------
6364 IgorA 151
 
152
align 4
6358 IgorA 153
red:
6837 hidnplayr 154
        call drawwin
180 heavyiron 155
;----------------------------------------------------------
6364 IgorA 156
;---------------------main loop----------------------------
180 heavyiron 157
;----------------------------------------------------------
6358 IgorA 158
align 4
1632 mario79 159
still:
6837 hidnplayr 160
        mcall SF_WAIT_EVENT
1643 mario79 161
 
6837 hidnplayr 162
        cmp     eax,1
163
        je      red
255 heavyiron 164
 
6837 hidnplayr 165
        cmp     eax,2
166
        je      keys
180 heavyiron 167
 
6837 hidnplayr 168
        cmp     eax,3
169
        je      buttons
255 heavyiron 170
 
6837 hidnplayr 171
        cmp     eax,6
172
        je      mouse
255 heavyiron 173
 
6837 hidnplayr 174
        jmp     still
175
 
1632 mario79 176
;---------------------------------------------------------------------
177
copy_str_1:
6837 hidnplayr 178
        xor     eax,eax
179
        cld
1632 mario79 180
@@:
6837 hidnplayr 181
        lodsb
182
        stosb
183
        test    eax,eax
184
        jnz     @b
185
        ret
1632 mario79 186
;---------------------------------------------------------------------
6837 hidnplayr 187
include 'events.inc'
188
include 'events_of_window.inc'
189
include 'events_of_keys.inc'
190
include 'events_of_buttons.inc'
191
include 'events_of_mouse.inc'
192
include 'panel_engen.inc'
193
include 'screen.inc'
1643 mario79 194
include 'menu_instruments.inc'
6837 hidnplayr 195
include 'icons_instruments.inc'
196
include 'icons.inc'
197
include 'sprites.inc'
198
include 'string.inc'
199
include 'palette.inc'
200
include 'files.inc'
201
include 'time.inc'
202
include 'menu.inc'
180 heavyiron 203
;-----------------------------------------------------------
255 heavyiron 204
;------------variables and data of program------------------
180 heavyiron 205
;-----------------------------------------------------------
6371 IgorA 206
;sound_havent_memory db 150,64,0
1643 mario79 207
 
1632 mario79 208
include 'lib_data.inc'
6837 hidnplayr 209
include 'panel_data.inc'
210
include 'brushes.inc'
211
include 'spray.inc'
212
include 'width_lines.inc'
180 heavyiron 213
;----------------------------------------------------------
6364 IgorA 214
;-------------------icon's picture-------------------------
180 heavyiron 215
;----------------------------------------------------------
6360 IgorA 216
align 4
255 heavyiron 217
panel_picture:
6329 IgorA 218
file 'panel_buttons.png'
6328 IgorA 219
.end:
6371 IgorA 220
align 4
221
panel_zoom:
222
file 'panel_zoom.png'
223
.end:
255 heavyiron 224
;****************cursors******************
225
brush_cursor:
6373 leency 226
file 'cursors/brush.cur'
255 heavyiron 227
flood_fill_cursor:
6373 leency 228
file 'cursors/flood_fill.cur'
255 heavyiron 229
lastik_cursor:
6373 leency 230
file 'cursors/lastik.cur'
255 heavyiron 231
other_cursor:
6373 leency 232
file 'cursors/other.cur'
255 heavyiron 233
pencil_cursor:
6373 leency 234
file 'cursors/pencil.cur'
255 heavyiron 235
pipette_cursor:
6373 leency 236
file 'cursors/pipette.cur'
255 heavyiron 237
spray_cursor:
6373 leency 238
file 'cursors/spray.cur'
255 heavyiron 239
zoom_cursor:
6373 leency 240
file 'cursors/zoom.cur'
180 heavyiron 241
;----------------------------------------------------------
6364 IgorA 242
align 4
1632 mario79 243
IM_END:
244
;-----------------------------------------------------------
245
;------------variables and data of program------------------
246
;-----------------------------------------------------------
6837 hidnplayr 247
time                    rd 1
248
PosX                    rd 1 ;scroll x file position
249
PosY                    rd 1 ;scroll y file position
250
PointerToIcons          rd 1
251
ScreenPointer           rd 1
252
PointerToPicture        rd 1
253
PointerToCopyPicture    rd 1
254
PointerToCopyPicture2   rd 1
255
PointerToEditBufer      rd 1
256
PointerToSpriteBufer    rd 1
257
PointerToPalette        rd 1 ;указатель на пилитру (нужен для сохранения в *.bmp)
258
Color                   rd 1
259
SColor                  rd 1
260
Number_Brush            rd 1
261
Brush_SizeX             rd 1
262
Brush_SizeY             rd 1
263
Current_instrument      rd 1
264
Last_instrument         rd 1
265
OldX                    rd 1
266
OldY                    rd 1
180 heavyiron 267
 
6837 hidnplayr 268
MouseX                  rd 1
269
MouseY                  rd 1
270
MouseBut                        rd 1 ;события от кнопок мыши
271
Window_SizeX            rd 1
272
Window_SizeY            rd 1
273
Window_CordinatX        rd 1
274
Window_CordinatY        rd 1
275
Picture_SizeX           rd 1
276
Picture_SizeY           rd 1
277
ScreenX                 rd 1 ;координата x курсора с учетом масштаба
278
ScreenY                 rd 1 ;координата y курсора с учетом масштаба
279
WorkScreen_SizeX        rd 1 ;ширина рабочего экрана
280
WorkScreen_SizeY        rd 1 ;высота рабочего экрана
281
MaxWorkScreen_SizeX     rd 1
282
MaxWorkScreen_SizeY     rd 1
283
k                       rd 1 ;масштаб
180 heavyiron 284
 
6837 hidnplayr 285
ReserveArray            rd 1 ;указатель на память используемую при рисовании фигур
286
        ;для сохранения участков фона под фигурами, а также для заливки
287
CounterX                rd 1 ;число пикселей изображения по ширине, которые попадают
288
        ;в экран рабочей области, с учетом текущего масштаба
289
CounterY                rd 1
290
OffsetYPicture          rd 1 ;сдвиг по оси y в буфере изображения при рисовании
291
        ;следующей линии изображения
292
OffsetYWorkScreen       rd 1 ;сдвиг по оси y в буфере рабочей области при
293
        ;рисовании следующей линии пикселей. Чем больше масштаб, тем ниже
294
        ;нужно опускаться по рабочей области.
295
OffsetYBigPixel         rd 1 ;сдвиг по оси y для рисования пикселей на большом
296
        ;масштабе. Рисуется 1-я полоса пикселя, а потом нужно перейти вниз и
297
        ;влево для рисования следующей полосы.
1632 mario79 298
 
6837 hidnplayr 299
Icon_X                  rd 1
300
Icon_Y                  rd 1
301
counter                 rd 1
302
counter2                rd 1
303
number_panel            rd 1
304
number_menu             rd 1
1632 mario79 305
 
6837 hidnplayr 306
Scroll1CoordinatX       rd 1 ;scroll x screen position
307
Scroll1CoordinatY       rd 1 ;scroll y screen position
308
Scroll1MaxSizeX         rd 1
309
Scroll1MaxSizeY         rd 1
310
Scroll1SizeX            rd 1 ;scroll polzunok size
311
Scroll1FreeX            rd 1
1632 mario79 312
 
6837 hidnplayr 313
Scroll2CoordinatX       rd 1
314
Scroll2CoordinatY       rd 1
315
Scroll2MaxSizeX         rd 1
316
Scroll2MaxSizeY         rd 1
317
Scroll2SizeY            rd 1
318
Scroll2FreeY            rd 1
1632 mario79 319
 
6837 hidnplayr 320
x                       rd 1
321
y                       rd 1
1632 mario79 322
 
6837 hidnplayr 323
Radius                  rd 1
324
Dx_                     rd 1
325
Dy_                     rd 1
326
line_width              rd 1
327
a_ellips                rd 1
328
b_ellips                rd 1
6364 IgorA 329
 
6837 hidnplayr 330
used_OldX               rd 1 ;for draw hard contour
331
used_OldY               rd 1
6369 IgorA 332
paste_img_w rd 1 ;ширина вставляемого изображения
333
paste_img_h rd 1 ;высота вставляемого изображения
6837 hidnplayr 334
crossing_old_x          rd 1 ;начальная коорд. x области копирования
335
crossing_old_y          rd 1 ;начальная коорд. y области копирования
336
rectangular_shade_x     rd 1 ;конечная коорд. x области копирования
337
rectangular_shade_y     rd 1 ;конечная коорд. y области копирования
338
crossing                rd 1 ;0 - выделения нет, 1 - идет процес выделения,
339
        ;2 - выделение завершено, 3 - область выделения перемещается
340
number_undo             rd 1
341
SpriteSizeX             rd 1 ;???
342
SpriteSizeY             rd 1 ;???
343
SpriteCoordinatX        rd 1
344
SpriteCoordinatY        rd 1
345
SpriteOldCoordinatX     rd 1
346
SpriteOldCoordinatY     rd 1
6364 IgorA 347
 
6837 hidnplayr 348
CursorsID       rd 10
6364 IgorA 349
 
6837 hidnplayr 350
Activate_instrument     rb 1 ;если равно 0 - то копирование текущего буфера
351
        ;для его редактирования, если 1 - текущий буфер не копируется
352
save_flag               rb 1
353
exit_from_work_arrea    rb 1
354
lastik_is_active        rb 1
355
instrument_used         rb 1
356
DrawSprite_flag         rb 1
357
Paste_flag              rb 1
1632 mario79 358
;---------------------------------------------------------------------
552 diamond 359
IncludeUGlobals
1632 mario79 360
;---------------------------------------------------------------------
361
align 4
6328 IgorA 362
file_path rb 4096
363
filename_area rb 256
364
temp_dir_pach rb 4096
365
library_path rb 4096
366
cur_dir_path rb 4096
367
procinfo: rb 1024
6359 IgorA 368
align 4
369
syscolors rb 192
370
syscolors_end:
1632 mario79 371
;---------------------------------------------------------------------
372
align 4
6837 hidnplayr 373
        rb 4096
1632 mario79 374
stacktop:
375
;---------------------------------------------------------------------
376
I_END: