Subversion Repositories Kolibri OS

Rev

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