Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
9541 leency 1
draw_palitra:
2
    ; Функция 13 - нарисовать прямоугольник
3
    ;mcall   SF_DRAW_RECT, 110 shl 16+148, 9 shl 16+148, [sc.work]
4
 
5
    cmp     [renmode],2
6
    je      cyrcle_draw
7
    ;cmp     [renmode],1
8
    ;je      picker_draw
9
    cmp     [renmode],0
10
    je      sheme_draw
11
    ret
12
 
13
    ;.................................................................................................
14
    ; Отрисовка круговой диаграммы
15
    ;.................................................................................................
16
    cyrcle_draw:
17
    ;mov     eax,13
18
    ;mov     edx,0x666666
19
    ;mov     ebx,108*65536+152
20
    ;mov     ecx,125*65536+33
21
    ;mcall
22
    ;mov     edx,0xF3F3F3
23
    ;mov     ebx,109*65536+150
24
    ;mov     ecx,126*65536+31
25
    ;mcall
26
 
27
    ;mov     eax,4                         ; 4 - вывести строку текста в окно
28
    ;mov     ebx,115 shl 16+131            ; [координата по оси x]*65536 + [координата по оси y]
29
    ;mov     ecx,0x666666                  ; 0xX0RRGGBB (RR, GG, BB задают цвет текста)
30
    ;mov     edx,hint                      ; указатель на начало строки
31
    ;mov     esi,24                        ; выводить esi символов
32
    ;mcall
33
    ;mov     ebx,125 shl 16+144            ; [координата по оси x]*65536 + [координата по оси y]
34
    ;mov     edx,hint2                     ; указатель на начало строки
35
    ;mov     esi,21                        ; выводить esi символов
36
    ;mcall
37
 
38
    ;mov     edx,[color]
39
    ;mov     ebx,109*65536+150
40
    ;mov     ecx, 10*65536+150
41
    ;mcall
42
    call    mouse_local                   ; получаем координаты мыши относительно окна
43
    mov     ecx, [mouse_x]                ; заносим в регистр
44
    mov     edx, [mouse_y]                ; заносим в регистр
45
    cmp     ecx, WIN_W-10
46
    jg      cyrcle_draw_2
47
    cmp     edx, WIN_H
48
    jle     end_cyrcle_draw
49
 
50
    cyrcle_draw_2:
51
        mcall   SF_SLEEP,10
52
    call    desktop_get
53
    call    mouse_global
54
 
55
    mov     ebx,112*65536+11
56
    mov     esi,0                         ; counter=8
57
    circle_loop:
58
      mov     ecx, 10*65536+11
59
      mov     edi,0
60
      circle_loop2:
61
        call    circle_pixel_read
62
        mcall   SF_DRAW_RECT
63
        add     ecx,11 shl 16
64
        inc     edi
65
        cmp     edi,13
66
        jne     circle_loop2
67
 
68
      add     ebx,11 shl 16
69
      inc     esi
70
      cmp     esi,13
71
      jne     circle_loop
72
 
73
    mcall   SF_DRAW_RECT, 177*65536+13, 76*65536+13, 0
74
    mov     ecx, [mouse_x]
75
    mov     edx, [mouse_y]
76
    inc     ecx
77
    inc     edx
78
    mov     ebx, edx
79
    imul    ebx, [desctop_w]
80
    add     ebx, ecx
81
    mcall   SF_GET_PIXEL
82
    mov     edx,eax
83
    mcall   SF_DRAW_RECT, 178*65536+11, 77*65536+11
84
    ret
85
    end_cyrcle_draw:
86
    mcall   SF_DRAW_RECT, 111*65536+145, 9*65536+145, 0x666666
87
    ret
88
 
89
    circle_pixel_read:
90
    push    ecx ebx
91
    mov     ecx, [mouse_x]
92
    mov     edx, [mouse_y]
93
    inc     ecx
94
    add     ecx, esi
95
    cmp     ecx, 6
96
    jl      _cpr_exit
97
    sub     ecx, 6
98
    inc     edx
99
    add     edx, edi
100
    cmp     edx, 6
101
    jl      _cpr_exit
102
    sub     edx, 6
103
 
104
    mov     ebx, edx
105
    imul    ebx, [desctop_w]
106
    add     ebx, ecx
107
    mcall   SF_GET_PIXEL
108
    mov     edx,eax
109
    pop     ebx ecx
110
    ret
111
 
112
    _cpr_exit:
113
    xor     edx,edx
114
    pop     ebx ecx
115
    ret
116
 
117
    ;picker_draw:
118
    ;ret
119
 
120
    ;.................................................................................................
121
    ; Отрисовка фона под кнопки
122
    ;.................................................................................................
123
 
124
    sheme_draw:
125
    mov     eax,SF_DRAW_RECT  ; Функция 13 - нарисовать прямоугольник
126
    mov     edx,0x222222                  ; цвет
127
    mov     ecx, palitra_yw               ; Начальные координаты по y [к-та y]*65536 + [размер]
128
    mov     esi,2                         ; Счетчик линий подложек
129
    re_draw:
130
    mov     ebx,palitra_xw             ; Начальные координаты по x [к-та x]*65536 + [размер]
131
    mov     edi,2                         ; Счетчик количества подложек
132
    for_fon_loop:
133
      int     0x40                        ; Прерывание
134
      add     ebx,(palitra_w+2) shl 16               ; Смещаем положение линии по х
135
      dec     edi                         ; Уменьшаем счетчик кнопок
136
      cmp     edi,0                       ; Сравниваем с нулем
137
    jnz     for_fon_loop                  ; Если не ноль то в начало цикла
138
    dec     esi                           ; Уменьшаем его
139
    cmp     esi,0                         ; Сравниваем с нулем
140
    mov     ecx,(palitra_w+DRAWY+3) shl 16+palitra_w              ; Начальные координаты по y [к-та y]*65536 + [размер]
141
    jnz     re_draw                       ; Если не ноль то в начало цикла
142
 
143
    ;.................................................................................................
144
    ; Отрисовка кнопок по циклу
145
    ;.................................................................................................
146
    mov     eax,SF_DRAW_RECT  ; Функция 13 - нарисовать прямоугольник
147
    mov     edx,0x0FFFFFFF                ; цвет
148
    mov     esi,4                         ; Счетчик количества абзацев (#4,8)
149
    mov     ebx,(palitra_x-CELLW-3) shl 16+CELLW               ; Начальные координаты по x [к-та x]*65536 + [размер]
150
    for_abz:
151
      ;;push    esi                       ; Сохраняем значение счетчика линий в стек
152
      cmp     esi,2
153
      jne     x2_line
154
      mov     ebx,(palitra_x-CELLW-3) shl 16+CELLW
155
      x2_line:
156
      add     ebx,3 shl 16                ; Смещаем положение линии по x
157
      mov     edi,8                       ; Счетчик количества кнопок в строке
158
      for_stolbik:
159
        push    edi                       ; Сохраняем значение счетчика линий в стек
160
        mov     edi,8                     ; Счетчик количества кнопок в строке
161
        mov     ecx,  (1-CELLW/3) shl 16+CELLW          ; Начальные координаты по y [к-та y]*65536 + [размер]
162
        cmp     esi,2
163
        jg      y2_line                   ; Если больше 4 то игнорим
164
        mov     ecx,(palitra_w+4-(CELLW/3)) shl 16+CELLW
165
        y2_line:
166
        add     ebx,(CELLW+1) shl 16              ; Смещаем положение линии по x
167
        for_loop:
168
          add     ecx,(CELLW+1) shl 16            ; Смещаем положение линии по y
169
          int     0x40                    ; Прерывание
170
          call    sub_red
171
          dec     edi                     ; Уменьшаем счетчик кнопок
172
          cmp     edi,0                   ; Сравниваем с нулем
173
          jnz     for_loop                ; Если не ноль то в начало цикла
174
      call    sub_green
175
      pop     edi                         ; Иначе восстанавливаем счетчик линий
176
      dec     edi                         ; Уменьшаем его
177
      cmp     edi,0                       ; Сравниваем с нулем
178
      jnz     for_stolbik                 ; Если не ноль то в начало цикла
179
    call    sub_blue
180
    ;;pop     esi                         ; Иначе восстанавливаем счетчик линий
181
    dec     esi                           ; Уменьшаем его
182
    cmp     esi,0                         ; Сравниваем с нулем
183
    jnz     for_abz                       ; Если не ноль то в начало цикла
184
    ret                                   ; Возвращаем управление
185
;end_draw_palitra-------------------------------------------------------------------------------------
186
 
187
 
188
sub_red:
189
    ;.................................................................................................
190
    ; Расчёт смещений красного цвета в генерации цвета палитры
191
    ;.................................................................................................
192
    push    eax
193
    mov     eax,[pnext]
194
  ;sub_red_0                              ; palitra
195
    cmp     al,0
196
    jne     sub_red_1
197
    sub     edx,0x40
198
    jmp     sub_red_e
199
  sub_red_1:                              ; random
200
    cmp     al,1
201
    jne     sub_red_2
202
    sub     edx,0x20
203
    jmp     sub_red_e
204
  sub_red_2:                              ; gree
205
    cmp     al,2
206
    jne     sub_red_3
207
    sub     edx,0x010101
208
    jmp     sub_red_e
209
  sub_red_3:                              ; red
210
    cmp     al,3
211
    jne     sub_red_4
212
    sub     edx,0x0101
213
    jmp     sub_red_e
214
  sub_red_4:                              ; green
215
    cmp     al,4
216
    jne     sub_red_5
217
    sub     edx,0x010001
218
    jmp     sub_red_e
219
  sub_red_5:                              ; blue
220
    cmp     al,5
221
    jne     sub_red_e
222
    sub     edx,0x010100
223
    jmp     sub_red_e
224
  sub_red_e:
225
    pop     eax
226
    ret                                   ; Возвращаем управление
227
;end_sub_red------------------------------------------------------------------------------------------
228
 
229
sub_green:
230
    ;.................................................................................................
231
    ; Расчёт смещений красного цвета в генерации цвета палитры
232
    ;.................................................................................................
233
    push    eax
234
    mov     eax,[pnext]
235
  ;sub_green_0
236
    cmp     al,0
237
    jne     sub_green_1
238
    sub     edx,0x4000
239
    jmp     sub_green_e
240
  sub_green_1:
241
    cmp     al,1
242
    jne     sub_green_e
243
    sub     edx,0x2000
244
    ;jmp     sub_green_e
245
  sub_green_e:
246
    pop     eax
247
    ret                                   ; Возвращаем управление
248
;end_sub_green----------------------------------------------------------------------------------------
249
 
250
 
251
sub_blue:
252
    ;.................................................................................................
253
    ; Расчёт смещений красного цвета в генерации цвета палитры
254
    ;.................................................................................................
255
    push    eax
256
    mov     eax,[pnext]
257
  ;sub_blue_0
258
    cmp     al,0
259
    jne     sub_blue_1
260
    sub     edx,0x600000
261
    jmp     sub_blue_e
262
  sub_blue_1:
263
    cmp     al,1
264
    jne     sub_blue_e
265
    sub     edx,0x400000
266
    ;jmp     sub_blue_e
267
  sub_blue_e:
268
    pop     eax
269
    ret                                   ; Возвращаем управление
270
;end_sub_blue-----------------------------------------------------------------------------------------