Subversion Repositories Kolibri OS

Rev

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