Subversion Repositories Kolibri OS

Rev

Rev 6364 | Rev 6367 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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