Subversion Repositories Kolibri OS

Rev

Rev 205 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;esi - screen size
  2. ;edi - pointer to image
  3. csi_width equ [esi+2]
  4. csi_height equ [esi]
  5. csi_bitspp equ [esi+4]
  6. csi_bytesps equ [esi+6]
  7.  
  8.  
  9. copy_screen_to_image:
  10. pusha
  11.         xor     edx,edx
  12.         xor     ecx,ecx
  13.         xor     ebx,ebx
  14.  
  15.         bt      dword [use_rect.flags],1
  16.         jc      copy_area
  17.  
  18.         cmp     csi_bitspp,word 24
  19.         je      .next_str_24
  20.  
  21. .next_str_32:
  22.         push    edx ebx
  23.         xor     ebx,ebx
  24. @@:
  25.         ;push    eax
  26.         mov     eax,[gs:edx]
  27.         mov     [edi+ecx],ax
  28.         shr     eax,8
  29.         mov     [edi+ecx+2],ah
  30.         ;pop     eax
  31.         add     ecx,3
  32.         add     edx,4;eax
  33.         inc     bx
  34.         cmp     bx,csi_width
  35.         jl     @b
  36.         pop     ebx edx
  37.         add     edx,csi_bytesps
  38.         inc     bx
  39.         cmp     bx,csi_height
  40.         jl      .next_str_32
  41. popa
  42. ret
  43.  
  44. .next_str_24:
  45.         push    edx ebx
  46.         xor     ebx,ebx
  47. @@:
  48.         ;push    eax
  49.         mov     eax,[gs:edx]
  50.         mov     [edi+ecx],ax
  51.         shr     eax,8
  52.         mov     [edi+ecx+2],ah
  53.         ;pop     eax
  54.         add     ecx,3
  55.         add     edx,3;eax
  56.         inc     bx
  57.         cmp     bx,csi_width
  58.         jl     @b
  59.         pop     ebx edx
  60.         add     edx,csi_bytesps
  61.         inc     bx
  62.         cmp     bx,csi_height
  63.         jl      .next_str_24
  64. popa
  65. ret
  66.  
  67. copy_area:
  68.         mov     eax,[scr.bytesps]
  69.         mov     ebx,eax
  70.         movzx   ecx,word [rect.top]
  71.         mul     ecx
  72.         movzx   ecx,word [rect.width]
  73.         shl     ecx,2
  74.         sub     ebx,ecx
  75.         movzx   ecx,word [rect.left]
  76.         shl     ecx,2
  77.         add     eax,ecx
  78.         movzx   ecx,word [rect.height]
  79.         mov     edx,eax
  80. .next_str:
  81.         movzx   esi,word [rect.width]
  82. .next_pixel:
  83.         mov     eax,[gs:edx]
  84.         mov     [edi],ax
  85.         shr     eax,8
  86.         mov     [edi+2],ah
  87.         add     edx,4
  88.         add     edi,3
  89.         dec     esi
  90.         jnz     .next_pixel
  91.         add     edx,ebx
  92.         loop    .next_str
  93. popa
  94. ret