Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5665 → Rev 5666

/programs/network/vncc/copyrect.inc
0,0 → 1,80
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; VNC client for KolibriOS ;;
;; ;;
;; Written by hidnplayr@kolibrios.org ;;
;; ;;
;; GNU GENERAL PUBLIC LICENSE ;;
;; Version 2, June 1991 ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
encoding_copyrect:
 
DEBUGF 1,"CopyRect\n"
 
@@:
lea eax, [esi+4]
cmp [datapointer], eax
jae @f
call read_data.more
jmp @b
@@:
 
push esi
 
movzx eax, word[esi+2] ; [src.y]
xchg al, ah
movzx ebx, [screen.width]
mul ebx ; [screen.width]*[src.y]
movzx ebx, word[esi] ; [src.x]
xchg bl, bh
add eax, ebx ; [screen.width]*[src.y]+[src.x]
lea esi, [framebuffer_data+eax*3] ; esi = framebuffer_data+([screen.width]*[src.y]+[src.x])*3
 
movzx eax, [rectangle.y]
movzx ebx, [screen.width]
mul ebx ; [screen.width]*[rectangle.y]
movzx ebx, [rectangle.x]
add eax, ebx ; [screen.width]*[rectangle.y]+[rectangle.x]
lea edi, [framebuffer_data+eax*3] ; edi = framebuffer_data+([screen.width]*[rectangle.y]+[rectangle.x])*3
 
movzx eax, [screen.width]
sub ax, [rectangle.width]
lea ebp, [eax*3] ; ebp = ([screen.width]-[rectangle.width])*3
 
cmp esi, edi
ja .copy
 
; source pixels come before destination in buffer, copy backwards
movzx eax, [rectangle.height]
movzx edx, [screen.width]
mul edx
lea eax, [eax*3-1]
add esi, eax
add edi, eax
 
neg ebp
std
.copy:
 
movzx edx, [rectangle.height]
movzx ecx, [rectangle.width]
lea ecx, [ecx*3]
.lineloop:
push ecx
rep movsb
pop ecx
 
add esi, ebp
add edi, ebp
dec edx
jnz .lineloop
 
pop esi
add esi, 4
cld
jmp next_rectangle
/programs/network/vncc/thread.inc
91,7 → 91,7
mcall send, [socketnum], pixel_format8, 20, 0
DEBUGF 1, "Sending pixel format\n"
 
mcall send, [socketnum], encodings, 8, 0
mcall send, [socketnum], encodings, 12, 0
DEBUGF 1, "Sending encoding info\n"
 
mov [thread_ready], 1
165,8 → 165,8
 
cmp eax, 0
je encoding_raw
; cmp eax, 1
; je encoding_copyrect
cmp eax, 1
je encoding_copyrect
; cmp eax, 2
; je encoding_RRE
; cmp eax, 5
/programs/network/vncc/vncc.asm
67,6 → 67,7
 
include "logon.inc"
include "raw.inc"
include "copyrect.inc"
include "thread.inc"
 
START:
236,10 → 237,13
 
encodings db 2 ; setEncodings
db 0 ; padding
db 0, 1 ; number of encodings
db 0, 2 ; number of encodings
db 0, 0, 0 ,0 ; raw encoding (DWORD, Big endian order)
; db 1, 0, 0, 0 ; Copyrect encoding
; db
db 0, 0, 0, 1 ; Copyrect encoding
; db 0, 0, 0, 2 ; RRE
; db 0, 0, 0, 5 ; HexTile
; db 0, 0, 0, 15 ; TRLE
; db 0, 0, 0, 16 ; ZRLE
 
fbur db 3 ; frame buffer update request
.inc db 0 ; incremental