Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
5663 hidnplayr 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                                 ;;
3
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved.    ;;
4
;; Distributed under terms of the GNU General Public License       ;;
5
;;                                                                 ;;
6
;;  VNC client for KolibriOS                                       ;;
7
;;                                                                 ;;
8
;;  Written by hidnplayr@kolibrios.org                             ;;
9
;;                                                                 ;;
10
;;          GNU GENERAL PUBLIC LICENSE                             ;;
11
;;             Version 2, June 1991                                ;;
12
;;                                                                 ;;
13
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3545 hidnplayr 14
 
5663 hidnplayr 15
encoding_raw:
3545 hidnplayr 16
 
5663 hidnplayr 17
        DEBUGF  1,"RAW\n"
3545 hidnplayr 18
 
5668 hidnplayr 19
        mov     eax, [rectangle.width]
20
        mov     ebx, [rectangle.height]
5663 hidnplayr 21
        mul     ebx
5677 hidnplayr 22
if BITS_PER_PIXEL = 16
23
        shl     eax, 1
24
else if BITS_PER_PIXEL = 24
25
        lea     eax, [eax*2+eax]
5722 hidnplayr 26
else if BITS_PER_PIXEL = 32
27
        shl     eax, 2
5677 hidnplayr 28
end if
29
  @@:
30
        push    eax
5663 hidnplayr 31
        add     eax, esi
32
        cmp     [datapointer], eax
33
        jae     @f
34
        call    read_data.more
35
        pop     eax
36
        jmp     @b
37
  @@:
5677 hidnplayr 38
        pop     eax
3545 hidnplayr 39
 
5668 hidnplayr 40
        mov     eax, [rectangle.y]
5663 hidnplayr 41
        movzx   ebx, [screen.width]
42
        mul     ebx                                     ; [screen.width]*[rectangle.y]
5716 hidnplayr 43
        add     eax, [rectangle.x]                      ; [screen.width]*[rectangle.y]+[rectangle.x]
5722 hidnplayr 44
        lea     edi, [framebuffer+eax*3]                ; edi = framebuffer_data+([screen.width]*[rectangle.y]+[rectangle.x])*3
3545 hidnplayr 45
 
5663 hidnplayr 46
        movzx   eax, [screen.width]
5668 hidnplayr 47
        sub     eax, [rectangle.width]
5663 hidnplayr 48
        lea     ebp, [eax*3]                            ; ebp = ([screen.width]-[rectangle.width])*3
3545 hidnplayr 49
 
5668 hidnplayr 50
        mov     edx, [rectangle.height]
3545 hidnplayr 51
 
5663 hidnplayr 52
  .lineloop:
5668 hidnplayr 53
        mov     ecx, [rectangle.width]
5677 hidnplayr 54
if BITS_PER_PIXEL = 24
55
        lea     ecx, [ecx*2+ecx]
56
end if
3545 hidnplayr 57
 
5677 hidnplayr 58
if BITS_PER_PIXEL = 8
5663 hidnplayr 59
  .pixelloop:
5677 hidnplayr 60
        mov     bl, 85
5663 hidnplayr 61
        mov     al, [esi]
5677 hidnplayr 62
        shr     al, 6
5663 hidnplayr 63
        and     al, 3
64
        mul     bl
5677 hidnplayr 65
        stosb                   ; blue
66
        mov     bl, 36
5663 hidnplayr 67
        mov     al, [esi]
5677 hidnplayr 68
        shr     al, 3
69
        and     al, 7
5663 hidnplayr 70
        mul     bl
5677 hidnplayr 71
        stosb                   ; green
5663 hidnplayr 72
        mov     al, [esi]
5677 hidnplayr 73
        and     al, 7
5663 hidnplayr 74
        mul     bl
5677 hidnplayr 75
        stosb                   ; red
5663 hidnplayr 76
        inc     esi
77
        dec     ecx
78
        jnz     .pixelloop
5677 hidnplayr 79
else if BITS_PER_PIXEL = 16
80
  .pixelloop:
81
        lodsw
82
        mov     bx, ax
83
        shl     al, 3
84
        and     al, 0xf8
85
        stosb                   ; blue
86
        mov     ax, bx
87
        shr     ax, 3
88
        and     al, 0xfc
89
        stosb                   ; green
90
        mov     al, bh
91
        and     al, 0xf8
92
        stosb                   ; red
93
        dec     ecx
94
        jnz     .pixelloop
95
else if BITS_PER_PIXEL = 24
96
        rep movsb
5722 hidnplayr 97
else if BITS_PER_PIXEL = 32
98
  .pixelloop:
99
        movsw
100
        movsb
101
        inc     esi
102
        dec     ecx
103
        jnz     .pixelloop
5677 hidnplayr 104
end if
3545 hidnplayr 105
 
5663 hidnplayr 106
        add     edi, ebp
107
        dec     edx
108
        jnz     .lineloop
109
        jmp     next_rectangle