Subversion Repositories Kolibri OS

Rev

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

  1. use32
  2.         org 0x0
  3.         db 'MENUET01'
  4.         dd 1,start,i_end,mem,stacktop,0,cur_dir_path
  5.  
  6. include '../../../../../proc32.inc'
  7. include '../../../../../macros.inc'
  8. include '../../../../../KOSfuncs.inc'
  9. include '../../../../../load_img.inc'
  10. include '../opengl_const.inc'
  11. include '../../../../../develop/info3ds/info_fun_float.inc'
  12.  
  13. @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
  14.  
  15. align 4
  16. image_data_toolbar dd 0
  17. IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
  18.  
  19. offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
  20.  
  21. align 4
  22. start:
  23. load_libraries l_libs_start,l_libs_end
  24.         ;проверка на сколько удачно загузились библиотеки
  25.         mov     ebp,lib_0
  26.         .test_lib_open:
  27.         cmp     dword [ebp+ll_struc_size-4],0
  28.         jz      @f
  29.                 mcall SF_TERMINATE_PROCESS
  30.         @@:
  31.         add ebp,ll_struc_size
  32.         cmp ebp,l_libs_end
  33.         jl .test_lib_open
  34.  
  35.         mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  36.         mcall SF_SET_EVENTS_MASK,0x27
  37.  
  38.         stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1
  39.         stdcall [glEnable], GL_DEPTH_TEST
  40.         stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
  41.         stdcall [gluNewQuadric]
  42.         mov [qObj],eax
  43.         stdcall [gluQuadricTexture], eax,GL_TRUE
  44.  
  45.         stdcall [glClearColor], 0.25,0.25,0.25,0.0
  46.         stdcall [glShadeModel], GL_SMOOTH
  47.  
  48.         mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
  49.         mov eax,[eax] ;eax -> ZBuffer
  50.         mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
  51.         mov dword[buf_ogl],eax
  52.  
  53.         load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h
  54.         stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
  55.         stdcall mem.Free,[image_data_toolbar] ;освобождаем память
  56.         stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
  57.         stdcall [buf2d_convert_text_matrix], buf_1
  58.  
  59.         load_image_file 'toolb_1.png', image_data_toolbar
  60.         load_image_file 'text_1.png', texture, text_w,text_h ;открытие файла текстуры
  61.  
  62.         ;* Setup texturing *
  63.         stdcall [glTexEnvi], GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL
  64.  
  65.         ;* generate texture object IDs *
  66.         stdcall [glGenTextures], 1, TexObj
  67.         stdcall [glBindTexture], GL_TEXTURE_2D, [TexObj]
  68.         stdcall [glTexImage2D], GL_TEXTURE_2D, 0, 3, [text_w], [text_h],\
  69.                 0, GL_RGB, GL_UNSIGNED_BYTE, [texture]
  70.    
  71.         stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST
  72.         stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST
  73.         stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT
  74.         stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT
  75.         stdcall [glBindTexture], GL_TEXTURE_2D, [TexObj]
  76.         stdcall [glEnable], GL_TEXTURE_2D
  77.  
  78.         call draw_3d
  79.  
  80. align 4
  81. red_win:
  82.         call draw_window
  83.  
  84. align 4
  85. still:
  86.         mcall SF_WAIT_EVENT
  87.         cmp al,1
  88.         jz red_win
  89.         cmp al,2
  90.         jz key
  91.         cmp al,3
  92.         jz button
  93.         jmp still
  94.  
  95. align 4
  96. draw_window:
  97.         pushad
  98.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  99.         mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption
  100.  
  101.         mov esi,[sc.work_button]
  102.         mcall SF_DEFINE_BUTTON,(6 shl 16)+19,(6 shl 16)+19,3+0x40000000 ;сферы
  103.         mcall ,(36 shl 16)+19,,4+0x40000000 ;куб
  104.         mcall ,(66 shl 16)+19,,5+0x40000000 ;масштаб +
  105.         mcall ,(96 shl 16)+19,,6+0x40000000 ;масштаб -
  106.  
  107.         mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+5 ;сферы
  108.         add ebx,2*IMAGE_TOOLBAR_ICON_SIZE
  109.         mcall ,,,(35 shl 16)+5 ;куб
  110.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  111.         mcall ,,,(65 shl 16)+5 ;масштаб +
  112.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  113.         mcall ,,,(95 shl 16)+5 ;масштаб -
  114.  
  115.         stdcall [kosglSwapBuffers]
  116.         mcall SF_REDRAW,SSF_END_DRAW
  117.         popad
  118.         ret
  119.  
  120. align 4
  121. key:
  122.         mcall SF_GET_KEY
  123.  
  124.         cmp ah,27 ;Esc
  125.         je button.exit
  126.  
  127.         cmp ah,61 ;+
  128.         jne @f
  129.                 call but_zoom_p
  130.                 jmp still
  131.         @@:
  132.         cmp ah,45 ;-
  133.         jne @f
  134.                 call but_zoom_m
  135.                 jmp still
  136.         @@:
  137.         cmp ah,178 ;Up
  138.         jne @f
  139.                 finit
  140.                 fld dword[angle_y]
  141.                 fadd dword[delt_size]
  142.                 fst dword[angle_y]
  143.                 mov word[NumberSymbolsAD],2
  144.                 fstp qword[Data_Double]
  145.                 call DoubleFloat_to_String
  146.                 mov byte[txt_angle_y.v],0
  147.                 stdcall str_cat, txt_angle_y.v,Data_String
  148.                 call draw_3d
  149.                 stdcall [kosglSwapBuffers]
  150.         @@:
  151.         cmp ah,177 ;Down
  152.         jne @f
  153.                 finit
  154.                 fld dword[angle_y]
  155.                 fsub dword[delt_size]
  156.                 fst dword[angle_y]
  157.                 mov word[NumberSymbolsAD],2
  158.                 fstp qword[Data_Double]
  159.                 call DoubleFloat_to_String
  160.                 mov byte[txt_angle_y.v],0
  161.                 stdcall str_cat, txt_angle_y.v,Data_String
  162.                 call draw_3d
  163.                 stdcall [kosglSwapBuffers]
  164.         @@:
  165.         cmp ah,176 ;Left
  166.         jne @f
  167.                 finit
  168.                 fld dword[angle_z]
  169.                 fadd dword[delt_size]
  170.                 fst dword[angle_z]
  171.                 mov word[NumberSymbolsAD],2
  172.                 fstp qword[Data_Double]
  173.                 call DoubleFloat_to_String
  174.                 mov byte[txt_angle_z.v],0
  175.                 stdcall str_cat, txt_angle_z.v,Data_String
  176.                 call draw_3d
  177.                 stdcall [kosglSwapBuffers]
  178.         @@:
  179.         cmp ah,179 ;Right
  180.         jne @f
  181.                 finit
  182.                 fld dword[angle_z]
  183.                 fsub dword[delt_size]
  184.                 fst dword[angle_z]
  185.                 mov word[NumberSymbolsAD],2
  186.                 fstp qword[Data_Double]
  187.                 call DoubleFloat_to_String
  188.                 mov byte[txt_angle_z.v],0
  189.                 stdcall str_cat, txt_angle_z.v,Data_String
  190.                 call draw_3d
  191.                 stdcall [kosglSwapBuffers]
  192.         @@:
  193.  
  194.         jmp still
  195.  
  196. align 4
  197. button:
  198.         mcall SF_GET_BUTTON
  199.         cmp ah,3
  200.         jne @f
  201.                 call but_dr_0
  202.                 jmp still
  203.         @@:
  204.         cmp ah,4
  205.         jne @f
  206.                 call but_dr_1
  207.                 jmp still
  208.         @@:
  209.         cmp ah,5
  210.         jne @f
  211.                 call but_zoom_p
  212.                 jmp still
  213.         @@:
  214.         cmp ah,6
  215.         jne @f
  216.                 call but_zoom_m
  217.                 jmp still
  218.         @@:
  219.         cmp ah,1
  220.         jne still
  221. .exit:
  222.         stdcall [gluDeleteQuadric], [qObj]
  223.         stdcall mem.Free,[image_data_toolbar]
  224.         mcall SF_TERMINATE_PROCESS
  225.  
  226. align 4
  227. but_dr_0:
  228.         mov dword[dr_figure],0
  229.         call draw_3d
  230.         stdcall [kosglSwapBuffers]
  231.         ret
  232.  
  233. align 4
  234. but_dr_1:
  235.         mov dword[dr_figure],1
  236.         call draw_3d
  237.         stdcall [kosglSwapBuffers]
  238.         ret
  239.  
  240. align 4
  241. but_zoom_p:
  242.         finit
  243.         fld dword[scale]
  244.         fadd dword[sc_delt]
  245.         fcom dword[sc_max]
  246.         fstsw ax
  247.         sahf
  248.         jbe @f
  249.                 ffree st0
  250.                 fincstp
  251.                 fld dword[sc_max]
  252.         @@:
  253.         fst dword[scale]
  254.         mov word[NumberSymbolsAD],3
  255.         fstp qword[Data_Double]
  256.         call DoubleFloat_to_String
  257.         mov byte[txt_scale.v],0
  258.         stdcall str_cat, txt_scale.v,Data_String
  259.         call draw_3d
  260.         stdcall [kosglSwapBuffers]
  261.         ret
  262.  
  263. align 4
  264. but_zoom_m:
  265.         finit
  266.         fld dword[scale]
  267.         fsub dword[sc_delt]
  268.         fcom dword[sc_min]
  269.         fstsw ax
  270.         sahf
  271.         ja @f
  272.                 ffree st0
  273.                 fincstp
  274.                 fld dword[sc_min]
  275.         @@:
  276.         fst dword[scale]
  277.         mov word[NumberSymbolsAD],3
  278.         fstp qword[Data_Double]
  279.         call DoubleFloat_to_String
  280.         mov byte[txt_scale.v],0
  281.         stdcall str_cat, txt_scale.v,Data_String
  282.         call draw_3d
  283.         stdcall [kosglSwapBuffers]
  284.         ret
  285.  
  286. align 4
  287. caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
  288. align 4
  289. ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
  290. ;sizeof.TinyGLContext = 28
  291.  
  292. align 4
  293. draw_3d:
  294. stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
  295.  
  296. stdcall [glPushMatrix]
  297.         stdcall [glTranslatef], 0.0,0.0,0.5
  298.         stdcall [glScalef], [scale], [scale], [scale]
  299.         stdcall [glRotatef], [angle_z],0.0,0.0,1.0
  300.         stdcall [glRotatef], [angle_y],0.0,1.0,0.0
  301.  
  302. cmp dword[dr_figure],0
  303. jne @f
  304.         ; рисование сфер
  305.         stdcall [glColor3f], 1.0, 1.0, 0.0
  306.         stdcall [gluSphere], [qObj], 1.0, 32,32
  307.  
  308.         stdcall [glColor3f], 1.0, 0.0, 0.0
  309.         stdcall [glTranslatef], -1.6,0.0,0.0
  310.         stdcall [gluSphere], [qObj], 0.55, 16,16
  311.  
  312.         stdcall [glColor3f], 0.0, 0.0, 1.0
  313.         stdcall [glTranslatef], 3.2,0.0,0.0
  314.         stdcall [gluSphere], [qObj], 0.55, 16,16
  315. @@:
  316. cmp dword[dr_figure],1
  317. jne @f
  318.         ; рисование граней куба
  319.         stdcall [glBegin],GL_QUADS
  320.  
  321. ; Передняя грань
  322.         stdcall [glTexCoord2f], 0.0f, 0.0f
  323.         stdcall [glVertex3f], -1.0f, -1.0f,  1.0f ; Низ лево
  324.         stdcall [glTexCoord2f], 1.0f, 0.0f
  325.         stdcall [glVertex3f],  1.0f, -1.0f,  1.0f ; Низ право
  326.         stdcall [glTexCoord2f], 1.0f, 1.0f
  327.         stdcall [glVertex3f],  1.0f,  1.0f,  1.0f ; Верх право
  328.         stdcall [glTexCoord2f], 0.0f, 1.0f
  329.         stdcall [glVertex3f], -1.0f,  1.0f,  1.0f ; Верх лево
  330.  
  331. ; Задняя грань
  332.         stdcall [glTexCoord2f], 1.0f, 0.0f
  333.         stdcall [glVertex3f], -1.0f, -1.0f, -1.0f ; Низ право
  334.         stdcall [glTexCoord2f], 1.0f, 1.0f
  335.         stdcall [glVertex3f], -1.0f,  1.0f, -1.0f ; Верх право
  336.         stdcall [glTexCoord2f], 0.0f, 1.0f
  337.         stdcall [glVertex3f],  1.0f,  1.0f, -1.0f ; Верх лево
  338.         stdcall [glTexCoord2f], 0.0f, 0.0f
  339.         stdcall [glVertex3f],  1.0f, -1.0f, -1.0f ; Низ лево
  340.  
  341. ; Верхняя грань
  342.         stdcall [glTexCoord2f], 0.0f, 1.0f
  343.         stdcall [glVertex3f], -1.0f,  1.0f, -1.0f ; Верх лево
  344.         stdcall [glTexCoord2f], 0.0f, 0.0f
  345.         stdcall [glVertex3f], -1.0f,  1.0f,  1.0f ; Низ лево
  346.         stdcall [glTexCoord2f], 1.0f, 0.0f
  347.         stdcall [glVertex3f],  1.0f,  1.0f,  1.0f ; Низ право
  348.         stdcall [glTexCoord2f], 1.0f, 1.0f
  349.         stdcall [glVertex3f],  1.0f,  1.0f, -1.0f ; Верх право
  350.        
  351. ; Нижняя грань
  352.         stdcall [glTexCoord2f], 1.0f, 1.0f
  353.         stdcall [glVertex3f], -1.0f, -1.0f, -1.0f ; Верх право
  354.         stdcall [glTexCoord2f], 0.0f, 1.0f
  355.         stdcall [glVertex3f],  1.0f, -1.0f, -1.0f ; Верх лево
  356.         stdcall [glTexCoord2f], 0.0f, 0.0f
  357.         stdcall [glVertex3f],  1.0f, -1.0f,  1.0f ; Низ лево
  358.         stdcall [glTexCoord2f], 1.0f, 0.0f
  359.         stdcall [glVertex3f], -1.0f, -1.0f,  1.0f ; Низ право
  360.  
  361. ; Правая грань
  362.         stdcall [glTexCoord2f], 1.0f, 0.0f
  363.         stdcall [glVertex3f],  1.0f, -1.0f, -1.0f ; Низ право
  364.         stdcall [glTexCoord2f], 1.0f, 1.0f
  365.         stdcall [glVertex3f],  1.0f,  1.0f, -1.0f ; Верх право
  366.         stdcall [glTexCoord2f], 0.0f, 1.0f
  367.         stdcall [glVertex3f],  1.0f,  1.0f,  1.0f ; Верх лево
  368.         stdcall [glTexCoord2f], 0.0f, 0.0f
  369.         stdcall [glVertex3f],  1.0f, -1.0f,  1.0f ; Низ лево
  370.  
  371. ; Левая грань
  372.         stdcall [glTexCoord2f], 0.0f, 0.0f
  373.         stdcall [glVertex3f], -1.0f, -1.0f, -1.0f ; Низ лево
  374.         stdcall [glTexCoord2f], 1.0f, 0.0f
  375.         stdcall [glVertex3f], -1.0f, -1.0f,  1.0f ; Низ право
  376.         stdcall [glTexCoord2f], 1.0f, 1.0f
  377.         stdcall [glVertex3f], -1.0f,  1.0f,  1.0f ; Верх право
  378.         stdcall [glTexCoord2f], 0.0f, 1.0f
  379.         stdcall [glVertex3f], -1.0f,  1.0f, -1.0f ; Верх лево
  380.  
  381.         stdcall [glEnd]
  382. @@:
  383. stdcall [glPopMatrix]
  384.  
  385.         stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
  386.         stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00
  387.         stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,25,0xffff00
  388.         ret
  389.  
  390. dr_figure dd 0
  391. qObj dd 0
  392. TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.)
  393. texture dd 0 ;указатель на память с текстурой
  394. text_w dd 0
  395. text_h dd 0
  396.  
  397. scale dd 0.4 ;начальный масштаб
  398. sc_delt dd 0.05 ;изменение масштаба при нажатии
  399. sc_min dd 0.1 ;минимальный масштаб
  400. sc_max dd 1.1 ;максимальный масштаб
  401. angle_z dd 0.0
  402. angle_y dd 0.0
  403. delt_size dd 3.0
  404.  
  405. light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2]
  406.         ;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии)
  407. light_dir dd 0.0,0.0,0.0 ;направление лампы
  408. mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика
  409. ;mat_shininess dd 3.0 ; Размер блика (обратная пропорция)
  410. white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником
  411. lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения
  412.  
  413. ;--------------------------------------------------
  414. align 4
  415. import_lib_tinygl:
  416.  
  417. macro E_LIB n
  418. {
  419.         n dd sz_#n
  420. }
  421. include '../export.inc'
  422.         dd 0,0
  423. macro E_LIB n
  424. {
  425.         sz_#n db `n,0
  426. }
  427. include '../export.inc'
  428.  
  429. align 4
  430. import_buf2d:
  431.         dd sz_init0
  432.         buf2d_create dd sz_buf2d_create
  433.         buf2d_create_f_img dd sz_buf2d_create_f_img
  434.         buf2d_clear dd sz_buf2d_clear
  435.         buf2d_draw dd sz_buf2d_draw
  436.         buf2d_delete dd sz_buf2d_delete
  437.         buf2d_resize dd sz_buf2d_resize
  438.         buf2d_line dd sz_buf2d_line
  439.         buf2d_rect_by_size dd sz_buf2d_rect_by_size
  440.         buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
  441.         buf2d_circle dd sz_buf2d_circle
  442.         buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
  443.         buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
  444.         buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
  445.         buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
  446.         buf2d_bit_blt dd sz_buf2d_bit_blt
  447.         buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
  448.         buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
  449.         buf2d_curve_bezier dd sz_buf2d_curve_bezier
  450.         buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
  451.         buf2d_draw_text dd sz_buf2d_draw_text
  452.         buf2d_crop_color dd sz_buf2d_crop_color
  453.         buf2d_offset_h dd sz_buf2d_offset_h
  454.         buf2d_flood_fill dd sz_buf2d_flood_fill
  455.         buf2d_set_pixel dd sz_buf2d_set_pixel
  456.         dd 0,0
  457.         sz_init0 db 'lib_init',0
  458.         sz_buf2d_create db 'buf2d_create',0
  459.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  460.         sz_buf2d_clear db 'buf2d_clear',0
  461.         sz_buf2d_draw db 'buf2d_draw',0
  462.         sz_buf2d_delete db 'buf2d_delete',0
  463.         sz_buf2d_resize db 'buf2d_resize',0
  464.         sz_buf2d_line db 'buf2d_line',0
  465.         sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
  466.         sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
  467.         sz_buf2d_circle db 'buf2d_circle',0
  468.         sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
  469.         sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
  470.         sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
  471.         sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
  472.         sz_buf2d_bit_blt db 'buf2d_bit_blt',0
  473.         sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
  474.         sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
  475.         sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
  476.         sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
  477.         sz_buf2d_draw_text db 'buf2d_draw_text',0
  478.         sz_buf2d_crop_color db 'buf2d_crop_color',0
  479.         sz_buf2d_offset_h db 'buf2d_offset_h',0
  480.         sz_buf2d_flood_fill db 'buf2d_flood_fill',0
  481.         sz_buf2d_set_pixel db 'buf2d_set_pixel',0
  482.  
  483. align 4
  484. import_libimg:
  485.         dd alib_init1
  486.         img_is_img  dd aimg_is_img
  487.         img_info    dd aimg_info
  488.         img_from_file dd aimg_from_file
  489.         img_to_file dd aimg_to_file
  490.         img_from_rgb dd aimg_from_rgb
  491.         img_to_rgb  dd aimg_to_rgb
  492.         img_to_rgb2 dd aimg_to_rgb2
  493.         img_decode  dd aimg_decode
  494.         img_encode  dd aimg_encode
  495.         img_create  dd aimg_create
  496.         img_destroy dd aimg_destroy
  497.         img_destroy_layer dd aimg_destroy_layer
  498.         img_count   dd aimg_count
  499.         img_lock_bits dd aimg_lock_bits
  500.         img_unlock_bits dd aimg_unlock_bits
  501.         img_flip    dd aimg_flip
  502.         img_flip_layer dd aimg_flip_layer
  503.         img_rotate  dd aimg_rotate
  504.         img_rotate_layer dd aimg_rotate_layer
  505.         img_draw    dd aimg_draw
  506.  
  507.         dd 0,0
  508.         alib_init1   db 'lib_init',0
  509.         aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
  510.         aimg_info    db 'img_info',0
  511.         aimg_from_file db 'img_from_file',0
  512.         aimg_to_file db 'img_to_file',0
  513.         aimg_from_rgb db 'img_from_rgb',0
  514.         aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
  515.         aimg_to_rgb2 db 'img_to_rgb2',0
  516.         aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
  517.         aimg_encode  db 'img_encode',0
  518.         aimg_create  db 'img_create',0
  519.         aimg_destroy db 'img_destroy',0
  520.         aimg_destroy_layer db 'img_destroy_layer',0
  521.         aimg_count   db 'img_count',0
  522.         aimg_lock_bits db 'img_lock_bits',0
  523.         aimg_unlock_bits db 'img_unlock_bits',0
  524.         aimg_flip    db 'img_flip',0
  525.         aimg_flip_layer db 'img_flip_layer',0
  526.         aimg_rotate  db 'img_rotate',0
  527.         aimg_rotate_layer db 'img_rotate_layer',0
  528.         aimg_draw    db 'img_draw',0
  529.  
  530. ;--------------------------------------------------
  531. system_dir_0 db '/sys/lib/'
  532. lib_name_0 db 'tinygl.obj',0
  533. system_dir_1 db '/sys/lib/'
  534. lib_name_1 db 'buf2d.obj',0
  535. system_dir_2 db '/sys/lib/'
  536. lib_name_2 db 'libimg.obj',0
  537. err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0
  538. err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0
  539. err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0
  540. head_f_i:
  541. head_f_l db 'System error',0
  542. err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0
  543. err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0
  544. err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0
  545. ;--------------------------------------------------
  546.  
  547. txt_scale:
  548. db 'Scale: '
  549. .v:
  550. db 0
  551. rb 10
  552.  
  553. txt_angle_z:
  554. db 'Rotate z: '
  555. .v:
  556. db 0
  557. rb 10
  558.  
  559. txt_angle_y:
  560. db 'Rotate y: '
  561. .v:
  562. db 0
  563. rb 10
  564.  
  565. align 4
  566. buf_ogl:
  567.         dd 0 ;указатель на буфер изображения
  568.         dw 10,10 ;+4 left,top
  569. .w: dd 400
  570. .h: dd 350
  571.         dd 0,24 ;+16 color,bit in pixel
  572.  
  573. align 4
  574. buf_1:
  575.         dd 0 ;указатель на буфер изображения
  576.         dd 0 ;+4 left,top
  577. .w: dd 0
  578. .h: dd 0,0,24 ;+16 color,bit in pixel
  579.  
  580. align 4
  581. l_libs_start:
  582.         lib_0 l_libs lib_name_0, cur_dir_path, file_name,  system_dir_0,\
  583.                 err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i
  584.         lib_1 l_libs lib_name_1, cur_dir_path, file_name,  system_dir_1,\
  585.                 err_msg_found_lib_1, head_f_l, import_buf2d,  err_msg_import_1,head_f_i
  586.         lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\
  587.                 err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
  588. l_libs_end:
  589.  
  590. align 4
  591. i_end:
  592.         run_file_70 FileInfoBlock
  593.         sc system_colors
  594. align 16
  595.         rb 4096
  596. stacktop:
  597.         cur_dir_path rb 4096
  598.         file_name rb 4096
  599. mem:
  600.