update: add vertical and horizontal lines for align image

git-svn-id: svn://kolibrios.org@8090 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2020-10-02 15:21:56 +00:00
parent bf38c73d0a
commit 02edd3949b
2 changed files with 93 additions and 20 deletions

View File

@ -1,8 +1,8 @@
<html>
<html lang=ru>
<head>
<title>Image transform</title>
<meta charset="WINDOWS-1251">
<style>
<style type="text/css">
body
{
font-size: 15px;
@ -45,7 +45,7 @@ table { font-size: 15px; }
</head>
<body>
<h1>Image transform 26.05.20</h1>
<h1>Image transform 02.10.20</h1>
<h2>Оглавление</h2>
<ul>
@ -81,8 +81,9 @@ table { font-size: 15px; }
<h2>Клавиатура</h2>
<p><b>Ctrl+O</b> - открытие файла.</p>
<p><b>Ctrl+S</b> - сохранение файла.</p>
<p><b>1, 2, 3, 4</b> - установка координат указанной точки.</p>
<p><b>1</b>, <b>2</b>, <b>3</b>, <b>4</b> - установка координат указанной точки.</p>
<p><b>&uarr;</b>, <b>&darr;</b>, <b>&larr;</b>, <b>&rarr;</b> - навигация по изображению или пермещение выделенной точки.</p>
<p><b>V</b>, <b>H</b> - поставить/убрать вертикальную/горизонтальную линию. Эти линии нужны для измерения точности выравнивания изображения и в итоговый файл не сохраняються.</p>
<h2>Алгоритм работы программы</h2>
<p>Открывается изображение и из него делается текстура для библиотеки TinyGL. (Если ширина изображения не кратна 2-м в какой-либо степени то оно дополняется пустыми полями с двух сторон до нужной ширины).

View File

@ -4,18 +4,17 @@ use32
dd 1,start,i_end,mem,stacktop,openfile_path,sys_path
include 'lang.inc'
include '../../../programs/macros.inc'
include '../../../programs/proc32.inc'
include '../../../programs/KOSfuncs.inc'
include '../../../programs/load_img.inc'
include '../../../programs/develop/libraries/TinyGL/asm_fork/opengl_const.inc'
include '../../../programs/develop/libraries/libs-dev/libimg/libimg.inc'
include '../../../programs/develop/info3ds/info_fun_float.inc'
include '../../macros.inc'
include '../../proc32.inc'
include '../../KOSfuncs.inc'
include '../../load_img.inc'
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
include '../../develop/libraries/TinyGL/asm_fork/zbuffer.inc'
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
include '../../develop/info3ds/info_fun_float.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Image transform 10.06.20',0 ;¯®¤¯¨áì ®ª­ 
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
caption db 'Image transform 02.10.20',0 ;¯®¤¯¨áì ®ª­ 
BUF_STRUCT_SIZE equ 21
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
@ -266,6 +265,24 @@ pushad
stdcall [buf2d_bit_blt], buf_0, [nav_x],[nav_y] ;,...
call points_draw
xor eax,eax
cmp [u_line_v],eax
je @f
mov eax,[u_line_v]
add eax,[nav_x]
stdcall [buf2d_line], buf_0, eax,0, eax,[buf_0.h], 0xffffff
inc eax
stdcall [buf2d_line], buf_0, eax,0, eax,[buf_0.h], 0
@@:
xor eax,eax
cmp [u_line_h],eax
je @f
mov eax,[u_line_h]
add eax,[nav_y]
stdcall [buf2d_line], buf_0, 0,eax, [buf_0.w],eax, 0xffffff
inc eax
stdcall [buf2d_line], buf_0, 0,eax, [buf_0.w],eax, 0
@@:
; *** ®¡­®¢«¥­¨¥ ¯®¤¯¨á¨ à §¬¥à  ä ©«  ***
mov edi,txt_f_size.size
@ -357,6 +374,18 @@ key:
call but_img_move_right
jmp .end0
@@:
cmp ah,104 ;H
jne @f
call set_user_line_h
mov byte[calc],1
jmp .end0
@@:
cmp ah,118 ;V
jne @f
call set_user_line_w
mov byte[calc],1
jmp .end0
@@:
mov ecx,eax
mcall SF_KEYBOARD,SSF_GET_CONTROL_KEYS
@ -660,6 +689,48 @@ proc mouse_left_u uses eax ebx
ret
endp
align 4
set_user_line_h:
pushad
call buf_get_mouse_coord
cmp eax,-1
je .end0
mov [mouse_down_y],ebx
sub ebx,[nav_y]
cmp eax,[buf_i0.h]
jle @f
mov eax,[buf_i0.h]
@@:
cmp [u_line_h],ebx
jne @f
xor ebx,ebx ;line on/off
@@:
mov [u_line_h],ebx
.end0:
popad
ret
align 4
set_user_line_w:
pushad
call buf_get_mouse_coord
cmp eax,-1
je .end0
mov [mouse_down_x],eax
sub eax,[nav_x]
cmp eax,[buf_i0.w]
jle @f
mov eax,[buf_i0.w]
@@:
cmp [u_line_v],eax
jne @f
xor eax,eax ;line on/off
@@:
mov [u_line_v],eax
.end0:
popad
ret
align 4
proc but_new_file uses eax edi esi
xor eax,eax
@ -715,6 +786,7 @@ proc calc_nav_params uses eax ecx edi
shr dword[nav_sy],1
xor ecx,ecx
mov [u_line_v],ecx
mov eax,[buf_i0.w]
@@:
inc ecx
@ -723,6 +795,7 @@ proc calc_nav_params uses eax ecx edi
jg @b
mov [nav_wnd_zoom],ecx
xor ecx,ecx
mov [u_line_h],ecx
mov eax,[buf_i0.h]
@@:
inc ecx
@ -878,10 +951,8 @@ proc but_open_file
;ᮧ¤ ¥¬ ¡ãä¥à ¤«ï ¯à¥®¡à §®¢ ­­®£® ¨§®¡à ¦¥­¨ï
mov edi,buf_ogl
mov eax,[buf_i0.w]
and eax, not 3
mov buf2d_w,eax
mov eax,[buf_i0.h]
and eax, not 3
mov buf2d_h,eax
cmp buf2d_data,0
jne @f
@ -897,7 +968,7 @@ proc but_open_file
.end_2:
mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
mov eax,[eax] ;eax -> ZBuffer
mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
mov eax,[eax+ZBuffer.pbuf]
mov buf2d_data,eax
stdcall [buf2d_bit_blt], edi, 0,0, buf_i0 ;ª®¯¨à㥬 ¨§®¡à ¦¥­¨¥ ¤«ï ¢®áâ ­®¢«¥­¨ï
@ -1115,7 +1186,7 @@ but_about:
ret
align 4
calc db 0
calc db 0 ;0 - ­¥ ¯¥à¥áç¨â뢠âì ¡ãä¥à, 1 - ¯¥à¥áç¨â âì ¨ ®¡­®¢¨âì ¡ãä¥à
view_b db 0 ;0 - ¨á室­ë© ¡ãä¥à, 1 - ¯à®á¬®âà १ã«ìâ â 
trans_a db 0 ;0 - ¯à¥®¡à §®¢ âì ¯® § ¤ ­­®¬ã à §¬¥àã, 1 - ¯à¥®¡à §®¢ âì ­  ¢¥áì ¡ãä¥à
@ -1557,8 +1628,7 @@ buf_ogl: dd 0,0
align 16
i_end:
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
;sizeof.TinyGLContext = 28
ctx1 rb 28 ;sizeof.TinyGLContext = 28
TexObj dd 0 ;¬ áᨢ 㪠§ â¥«¥© ­  ⥪áâãàë (¢ ¤ ­­®¬ á«ãç ¥ 1 èâ.)
nav_x_min dd 0 ;¬¨­. ª®®à¤. x ¤«ï ­ ¢¨£ æ¨¨
nav_y_min dd 0 ;¬¨­. ª®®à¤. y ¤«ï ­ ¢¨£ æ¨¨
@ -1576,6 +1646,8 @@ mouse_down_y dd ?
sel_act dd ? ;â®çª  ¢ë¡à ­­ ï ¤«ï । ªâ¨à®¢ ­¨ï á ª« ¢¨ âãàë
sel_pt rb 8*sizeof.point2d ;â®çª¨ ¤«ï ¢ë¡®à  4-å 㣫®¢
last_time dd 0
u_line_v dd 0 ;¢¥à⨪ «ì­ ï «¨­¨ï
u_line_h dd 0 ;£®à¨§®­â «ì­ ï «¨­¨ï
txt_buf rb 8
procinfo process_information
sc system_colors