Subversion Repositories Kolibri OS

Rev

Rev 5722 | Rev 5755 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5722 Rev 5750
Line 85... Line 85...
85
STATUS_LIB_ERR          = 16
85
STATUS_LIB_ERR          = 16
86
STATUS_THREAD_ERR       = 17
86
STATUS_THREAD_ERR       = 17
87
STATUS_LOGIN_FAILED     = 18
87
STATUS_LOGIN_FAILED     = 18
88
STATUS_SECURITY_ERR_C   = 19
88
STATUS_SECURITY_ERR_C   = 19
Line -... Line 89...
-
 
89
 
-
 
90
WORK_FRAMEBUFFER        = 1 shl 0
-
 
91
WORK_CURSOR             = 1 shl 1
-
 
92
WORK_GUI                = 1 shl 2
89
 
93
 
Line -... Line 94...
-
 
94
BYTES_PER_PIXEL = (BITS_PER_PIXEL + 7) / 8
-
 
95
 
-
 
96
if BITS_PER_PIXEL = 32
-
 
97
        BYTES_PER_CPIXEL= 3
-
 
98
else
-
 
99
        BYTES_PER_CPIXEL= BYTES_PER_PIXEL
90
BYTES_PER_PIXEL = (BITS_PER_PIXEL + 7) / 8
100
end if
91
 
101
 
92
include "keymap.inc"
102
include "keymap.inc"
93
include "gui.inc"
103
include "gui.inc"
94
include "network.inc"
104
include "network.inc"
95
include "raw.inc"
105
include "raw.inc"
96
include "copyrect.inc"
106
include "copyrect.inc"
97
include "rre.inc"
107
include "rre.inc"
-
 
108
include "trle.inc"
98
include "trle.inc"
109
include "zrle.inc"
Line -... Line 110...
-
 
110
include "cursor.inc"
-
 
111
include "des.inc"
-
 
112
 
-
 
113
 
-
 
114
if BITS_PER_PIXEL = 8
-
 
115
create_lut:
-
 
116
        mov     edi, lut_8bpp   ; 332 format
-
 
117
        xor     eax, eax
-
 
118
        call    green
-
 
119
        add     eax, 0x240000
-
 
120
        call    green
-
 
121
        add     eax, 0x250000
-
 
122
        call    green
-
 
123
        add     eax, 0x240000
-
 
124
        call    green
-
 
125
        add     eax, 0x250000
-
 
126
        call    green
-
 
127
        add     eax, 0x240000
-
 
128
        call    green
-
 
129
        add     eax, 0x250000
-
 
130
        call    green
-
 
131
        add     eax, 0x240000
-
 
132
        call    green
-
 
133
        ret
-
 
134
 
-
 
135
green:
-
 
136
        mov     ah, 0
-
 
137
        call    blue
-
 
138
        mov     ah, 36
-
 
139
        call    blue
-
 
140
        add     ah, 37
-
 
141
        call    blue
-
 
142
        add     ah, 36
-
 
143
        call    blue
-
 
144
        add     ah, 37
-
 
145
        call    blue
-
 
146
        add     ah, 36
-
 
147
        call    blue
-
 
148
        add     ah, 37
-
 
149
        call    blue
-
 
150
        add     ah, 36
-
 
151
        call    blue
-
 
152
        ret
-
 
153
 
-
 
154
blue:
-
 
155
        mov     al, 0
-
 
156
        stosd
-
 
157
        mov     al, 85
-
 
158
        stosd
-
 
159
        mov     al, 170
-
 
160
        stosd
-
 
161
        mov     al, 255
-
 
162
        stosd
-
 
163
        ret
99
include "zrle.inc"
164
end if
Line 100... Line 165...
100
include "des.inc"
165
 
Line 101... Line 166...
101
 
166
 
102
START:
167
START:
103
 
168
 
104
        mcall   68, 11                  ; init heap
169
        mcall   68, 11                  ; init heap
105
 
170
 
-
 
171
; Load libraries
106
; Load libraries
172
        stdcall dll.Load, @IMPORT
Line -... Line 173...
-
 
173
        test    eax, eax
-
 
174
        jz      @f
-
 
175
        mov     [status], STATUS_LIB_ERR
-
 
176
        jmp     draw_gui.first_time
-
 
177
  @@:
107
        stdcall dll.Load, @IMPORT
178
 
108
        test    eax, eax
179
; When using 8BPP, create lookup table
109
        jz      @f
180
if BITS_PER_PIXEL = 8
110
        mov     [status], STATUS_LIB_ERR
181
        call    create_lut
111
  @@:
182
end if
Line 122... Line 193...
122
        mov     [URLbox.pos], edi
193
        mov     [URLbox.pos], edi
123
        call    open_connection
194
        call    open_connection
124
  @@:
195
  @@:
Line 125... Line 196...
125
 
196
 
126
; Present the user with the GUI and wait for network connection
197
; Present the user with the GUI and wait for network connection
Line 127... Line 198...
127
        call    draw_gui
198
        call    draw_gui.first_time
128
 
199
 
Line 129... Line 200...
129
; Create main window
200
; Create main window
Line 155... Line 226...
155
        mcall   12, 2
226
        mcall   12, 2
Line 156... Line 227...
156
 
227
 
157
draw_framebuffer:
228
draw_framebuffer:
158
        DEBUGF  1, "Drawing framebuffer\n"
229
        DEBUGF  1, "Drawing framebuffer\n"
159
        mcall   7, framebuffer, dword[screen], 0
230
        mcall   7, framebuffer, dword[screen], 0
Line 160... Line 231...
160
        mov     [update_framebuffer], 0
231
        and     [work], not WORK_FRAMEBUFFER
161
 
232
 
162
mainloop:
233
mainloop:
163
        cmp     [status], STATUS_CONNECTED
234
        cmp     [status], STATUS_CONNECTED
164
        jne     draw_gui
235
        jne     draw_gui
-
 
236
        test    [work], WORK_FRAMEBUFFER
-
 
237
        jnz     draw_framebuffer
Line 165... Line 238...
165
        cmp     [update_framebuffer], 0
238
        test    [work], WORK_CURSOR
Line 166... Line 239...
166
        jne     draw_framebuffer
239
        jnz     update_cursor
167
 
240
 
Line 256... Line 329...
256
        mov     [status], STATUS_CLOSED
329
        mov     [status], STATUS_CLOSED
257
        mcall   close, [socketnum]
330
        mcall   close, [socketnum]
258
        mcall   -1
331
        mcall   -1
Line -... Line 332...
-
 
332
 
-
 
333
 
-
 
334
update_cursor:
-
 
335
 
-
 
336
; load cursor
-
 
337
        mov     dx, word[cursor.y]
-
 
338
        shl     edx, 16
-
 
339
        mov     dx, 2
-
 
340
        mcall   37, 4, cursor.image
-
 
341
        test    eax, eax
-
 
342
        jz      .fail
-
 
343
 
-
 
344
; set cursor
-
 
345
        mov     ecx, eax
-
 
346
        mcall   37, 5
-
 
347
 
-
 
348
; delete previously set cursor
-
 
349
        mov     ecx, eax
-
 
350
        mcall   37, 6
-
 
351
 
-
 
352
.fail:
-
 
353
        and     [work], not WORK_CURSOR
-
 
354
        jmp     mainloop
259
 
355
 
Line 260... Line 356...
260
 
356
 
Line 261... Line 357...
261
; DATA AREA
357
; DATA AREA
Line 270... Line 366...
270
 
366
 
Line 271... Line 367...
271
HandShake               db "RFB 003.003", 10
367
HandShake               db "RFB 003.003", 10
Line -... Line 368...
-
 
368
 
-
 
369
ClientInit              db 0            ; not shared
272
 
370
 
273
ClientInit              db 0            ; not shared
371
if BITS_PER_PIXEL = 32
274
 
372
 
275
SetPixelFormat32        db 0            ; setPixelformat
373
SetPixelFormat          db 0            ; setPixelformat
276
                        db 0, 0, 0      ; padding
374
                        db 0, 0, 0      ; padding
277
.bpp                    db 32           ; bits per pixel
375
.bpp                    db 32           ; bits per pixel
Line 284... Line 382...
284
.red_shift              db 16           ; red-shift
382
.red_shift              db 16           ; red-shift
285
.green_shift            db 8            ; green-shift
383
.green_shift            db 8            ; green-shift
286
.blue_shift             db 0            ; blue-shift
384
.blue_shift             db 0            ; blue-shift
287
                        db 0, 0, 0      ; padding
385
                        db 0, 0, 0      ; padding
Line -... Line 386...
-
 
386
 
-
 
387
else if BITS_PER_PIXEL = 24
288
 
388
 
289
SetPixelFormat24        db 0            ; setPixelformat
389
SetPixelFormat          db 0            ; setPixelformat
290
                        db 0, 0, 0      ; padding
390
                        db 0, 0, 0      ; padding
291
.bpp                    db 24           ; bits per pixel
391
.bpp                    db 24           ; bits per pixel
292
.depth                  db 24           ; depth
392
.depth                  db 24           ; depth
293
.big_endian             db 0            ; big-endian flag
393
.big_endian             db 0            ; big-endian flag
Line 298... Line 398...
298
.red_shift              db 16           ; red-shift
398
.red_shift              db 16           ; red-shift
299
.green_shift            db 8            ; green-shift
399
.green_shift            db 8            ; green-shift
300
.blue_shift             db 0            ; blue-shift
400
.blue_shift             db 0            ; blue-shift
301
                        db 0, 0, 0      ; padding
401
                        db 0, 0, 0      ; padding
Line -... Line 402...
-
 
402
 
-
 
403
else if BITS_PER_PIXEL = 16
302
 
404
 
303
SetPixelFormat16        db 0            ; setPixelformat
405
SetPixelFormat          db 0            ; setPixelformat
304
                        db 0, 0, 0      ; padding
406
                        db 0, 0, 0      ; padding
305
.bpp                    db 16           ; bits per pixel
407
.bpp                    db 16           ; bits per pixel
306
.depth                  db 16           ; depth
408
.depth                  db 16           ; depth
307
.big_endian             db 0            ; big-endian flag
409
.big_endian             db 0            ; big-endian flag
Line 312... Line 414...
312
.red_shift              db 11           ; red-shift
414
.red_shift              db 11           ; red-shift
313
.green_shift            db 5            ; green-shift
415
.green_shift            db 5            ; green-shift
314
.blue_shift             db 0            ; blue-shift
416
.blue_shift             db 0            ; blue-shift
315
                        db 0, 0, 0      ; padding
417
                        db 0, 0, 0      ; padding
Line -... Line 418...
-
 
418
 
-
 
419
else if BITS_PER_PIXEL = 8
316
 
420
 
317
SetPixelFormat8         db 0            ; setPixelformat
421
SetPixelFormat          db 0            ; setPixelformat
318
                        db 0, 0, 0      ; padding
422
                        db 0, 0, 0      ; padding
319
.bpp                    db 8            ; bits per pixel
423
.bpp                    db 8            ; bits per pixel
320
.depth                  db 8            ; depth
424
.depth                  db 8            ; depth
321
.big_endian             db 0            ; big-endian flag
425
.big_endian             db 0            ; big-endian flag
322
.true_color             db 1            ; true-colour flag
426
.true_color             db 1            ; true-colour flag
323
.red_max                db 0, 7         ; red-max
427
.red_max                db 0, 7         ; red-max
324
.green_max              db 0, 7         ; green-max
428
.green_max              db 0, 7         ; green-max
325
.blue_max               db 0, 3         ; blue-max
429
.blue_max               db 0, 3         ; blue-max
326
.red_shift              db 0            ; red-shift
430
.red_shift              db 5            ; red-shift
327
.green_shift            db 3            ; green-shift
431
.green_shift            db 2            ; green-shift
328
.blue_shift             db 6            ; blue-shift
432
.blue_shift             db 0            ; blue-shift
Line -... Line 433...
-
 
433
                        db 0, 0, 0      ; padding
-
 
434
 
329
                        db 0, 0, 0      ; padding
435
end if
330
 
436
 
331
SetEncodings            db 2            ; setEncodings
437
SetEncodings            db 2            ; setEncodings
332
                        db 0            ; padding
438
                        db 0            ; padding
333
                        db 0, 4         ; number of encodings
439
                        db 0, 5         ; number of encodings
334
;                        db 0, 0, 0, 16  ; ZRLE
440
;                        db 0, 0, 0, 16  ; ZRLE
335
                        db 0, 0, 0, 15  ; TRLE
441
                        db 0, 0, 0, 15  ; TRLE
-
 
442
                        db 0, 0, 0, 2   ; RRE
336
                        db 0, 0, 0, 2   ; RRE
443
                        db 0, 0, 0, 1   ; Copyrect encoding
337
                        db 0, 0, 0, 1   ; Copyrect encoding
444
                        db 0xff, 0xff, 0xff, 0x11       ; Cursor pseudo encoding
Line 338... Line 445...
338
                        db 0, 0, 0, 0   ; raw encoding
445
                        db 0, 0, 0, 0   ; raw encoding
339
  .length = $ - SetEncodings
446
  .length = $ - SetEncodings
Line 363... Line 470...
363
                rb 10
470
                rb 10
Line 364... Line 471...
364
 
471
 
Line 365... Line 472...
365
beep            db 0x85, 0x25, 0x85, 0x40, 0
472
beep            db 0x85, 0x25, 0x85, 0x40, 0
366
 
473
 
367
status                  dd STATUS_CONNECT
474
status                  dd STATUS_CONNECT
368
update_gui              dd 0
-
 
369
mouse_dd                dd 0
475
work                    dd 0
Line 370... Line 476...
370
update_framebuffer      dd 0
476
mouse_dd                dd 0
371
thread_id               dd 0
477
thread_id               dd 0
372
 
478
 
Line 474... Line 580...
474
keymap_alt              rw 128
580
keymap_alt              rw 128
475
username                rb 128
581
username                rb 128
476
password                rb 128
582
password                rb 128
477
keys                    rd 32*2         ; DES keys for VNC authentication
583
keys                    rd 32*2 ; DES keys for VNC authentication
Line -... Line 584...
-
 
584
 
-
 
585
cursor:
-
 
586
.y                      db ?
-
 
587
.x                      db ?
-
 
588
.image                  rd 32*32
-
 
589
 
-
 
590
align 4
-
 
591
if BITS_PER_PIXEL = 8
-
 
592
lut_8bpp                rd 256
-
 
593
end if
478
 
594
 
Line 479... Line 595...
479
sz_err_security_c       rb 512+1
595
sz_err_security_c       rb 512+1
480
 
596