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.  
  124.         stdcall [glClearColor], 0.25,0.25,0.25,0.0
  125.         stdcall [glShadeModel], GL_SMOOTH
  126.  
  127.         mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
  128.         mov eax,[eax] ;eax -> ZBuffer
  129.         mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
  130.         mov dword[buf_ogl],eax
  131.  
  132.         load_image_file 'font8x9.bmp', image_data_toolbar
  133.         stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
  134.         stdcall mem.Free,[image_data_toolbar] ;освобождаем память
  135.         stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
  136.         stdcall [buf2d_convert_text_matrix], buf_1
  137.  
  138.         load_image_file 'toolb_1.png', image_data_toolbar
  139.         call draw_3d
  140.  
  141. align 4
  142. red_win:
  143.         call draw_window
  144.  
  145. align 4
  146. still:
  147.         mcall SF_WAIT_EVENT
  148.         cmp al,1
  149.         jz red_win
  150.         cmp al,2
  151.         jz key
  152.         cmp al,3
  153.         jz button
  154.         jmp still
  155.  
  156. align 4
  157. draw_window:
  158.         pushad
  159.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  160.         mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption
  161.  
  162.         mov esi,[sc.work_button]
  163.         mcall SF_DEFINE_BUTTON,(6 shl 16)+19,(6 shl 16)+19,3+0x40000000 ;вершины вкл.
  164.         mcall ,(36 shl 16)+19,,4+0x40000000 ;каркасные грани вкл.
  165.         mcall ,(66 shl 16)+19,,5+0x40000000 ;сплошные грани вкл.
  166.         mcall ,(96 shl 16)+19,,6+0x40000000 ;масштаб +
  167.         mcall ,(126 shl 16)+19,,7+0x40000000 ;масштаб -
  168.  
  169.         mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+5 ;вершины вкл.
  170.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  171.         mcall ,,,(35 shl 16)+5 ;каркасные грани вкл.
  172.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  173.         mcall ,,,(65 shl 16)+5 ;сплошные грани вкл.
  174.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  175.         mcall ,,,(95 shl 16)+5 ;масштаб +
  176.         add ebx,IMAGE_TOOLBAR_ICON_SIZE
  177.         mcall ,,,(125 shl 16)+5 ;масштаб -
  178.  
  179.         stdcall [kosglSwapBuffers]
  180.         mcall SF_REDRAW,SSF_END_DRAW
  181.         popad
  182.         ret
  183.  
  184. align 4
  185. key:
  186.         mcall SF_GET_KEY
  187.  
  188.         cmp ah,27 ;Esc
  189.         je button.exit
  190.  
  191.         cmp ah,61 ;+
  192.         jne @f
  193.                 call but_zoom_p
  194.                 jmp still
  195.         @@:
  196.         cmp ah,45 ;-
  197.         jne @f
  198.                 call but_zoom_m
  199.                 jmp still
  200.         @@:
  201.         cmp ah,178 ;Up
  202.         jne @f
  203.                 finit
  204.                 fld dword[angle_y]
  205.                 fadd dword[delt_size]
  206.                 fst dword[angle_y]
  207.                 mov word[NumberSymbolsAD],2
  208.                 fstp qword[Data_Double]
  209.                 call DoubleFloat_to_String
  210.                 mov byte[txt_angle_y.v],0
  211.                 stdcall str_cat, txt_angle_y.v,Data_String
  212.                 call draw_3d
  213.                 stdcall [kosglSwapBuffers]
  214.         @@:
  215.         cmp ah,177 ;Down
  216.         jne @f
  217.                 finit
  218.                 fld dword[angle_y]
  219.                 fsub dword[delt_size]
  220.                 fst dword[angle_y]
  221.                 mov word[NumberSymbolsAD],2
  222.                 fstp qword[Data_Double]
  223.                 call DoubleFloat_to_String
  224.                 mov byte[txt_angle_y.v],0
  225.                 stdcall str_cat, txt_angle_y.v,Data_String
  226.                 call draw_3d
  227.                 stdcall [kosglSwapBuffers]
  228.         @@:
  229.         cmp ah,176 ;Left
  230.         jne @f
  231.                 finit
  232.                 fld dword[angle_z]
  233.                 fadd dword[delt_size]
  234.                 fst dword[angle_z]
  235.                 mov word[NumberSymbolsAD],2
  236.                 fstp qword[Data_Double]
  237.                 call DoubleFloat_to_String
  238.                 mov byte[txt_angle_z.v],0
  239.                 stdcall str_cat, txt_angle_z.v,Data_String
  240.                 call draw_3d
  241.                 stdcall [kosglSwapBuffers]
  242.         @@:
  243.         cmp ah,179 ;Right
  244.         jne @f
  245.                 finit
  246.                 fld dword[angle_z]
  247.                 fsub dword[delt_size]
  248.                 fst dword[angle_z]
  249.                 mov word[NumberSymbolsAD],2
  250.                 fstp qword[Data_Double]
  251.                 call DoubleFloat_to_String
  252.                 mov byte[txt_angle_z.v],0
  253.                 stdcall str_cat, txt_angle_z.v,Data_String
  254.                 call draw_3d
  255.                 stdcall [kosglSwapBuffers]
  256.         @@:
  257.  
  258.         jmp still
  259.  
  260. align 4
  261. button:
  262.         mcall SF_GET_BUTTON
  263.         cmp ah,3
  264.         jne @f
  265.                 call but_st_point
  266.                 jmp still
  267.         @@:
  268.         cmp ah,4
  269.         jne @f
  270.                 call but_st_line
  271.                 jmp still
  272.         @@:
  273.         cmp ah,5
  274.         jne @f
  275.                 call but_st_face
  276.                 jmp still
  277.         @@:
  278.         cmp ah,6
  279.         jne @f
  280.                 call but_zoom_p
  281.                 jmp still
  282.         @@:
  283.         cmp ah,7
  284.         jne @f
  285.                 call but_zoom_m
  286.                 jmp still
  287.         @@:
  288.         cmp ah,1
  289.         jne still
  290. .exit:
  291.         stdcall [gluDeleteQuadric], [qObj]
  292.         stdcall mem.Free,[image_data_toolbar]
  293.         mcall SF_TERMINATE_PROCESS
  294.  
  295. align 4
  296. but_st_point:
  297.         stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT
  298.         call draw_3d
  299.         stdcall [kosglSwapBuffers]
  300.         ret
  301.  
  302. align 4
  303. but_st_line:
  304.         stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE
  305.         call draw_3d
  306.         stdcall [kosglSwapBuffers]
  307.         ret
  308.  
  309. align 4
  310. but_st_face:
  311.         stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL
  312.         call draw_3d
  313.         stdcall [kosglSwapBuffers]
  314.         ret
  315.  
  316. align 4
  317. but_zoom_p:
  318.         finit
  319.         fld dword[scale]
  320.         fadd dword[delt_sc]
  321.         fst dword[scale]
  322.         mov word[NumberSymbolsAD],3
  323.         fstp qword[Data_Double]
  324.         call DoubleFloat_to_String
  325.         mov byte[txt_scale.v],0
  326.         stdcall str_cat, txt_scale.v,Data_String
  327.         call draw_3d
  328.         stdcall [kosglSwapBuffers]
  329.         ret
  330.  
  331. align 4
  332. but_zoom_m:
  333.         finit
  334.         fld dword[scale]
  335.         fsub dword[delt_sc]
  336.         fst dword[scale]
  337.         mov word[NumberSymbolsAD],3
  338.         fstp qword[Data_Double]
  339.         call DoubleFloat_to_String
  340.         mov byte[txt_scale.v],0
  341.         stdcall str_cat, txt_scale.v,Data_String
  342.         call draw_3d
  343.         stdcall [kosglSwapBuffers]
  344.         ret
  345.  
  346.  
  347. align 4
  348. caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
  349. align 4
  350. ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
  351. ;sizeof.TinyGLContext = 28
  352.  
  353. align 4
  354. draw_3d:
  355. stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
  356.  
  357. stdcall [glPushMatrix]
  358.         call SetLight
  359.  
  360.         stdcall [glTranslatef], 0.0,0.0,0.5
  361.         stdcall [glScalef], [scale], [scale], [scale]
  362.  
  363.         stdcall [glColor3f], 1.0, 1.0, 0.0
  364.         stdcall [glRotatef], [angle_z],0.0,0.0,1.0
  365.         stdcall [glRotatef], [angle_y],0.0,1.0,0.0
  366.         stdcall [gluSphere], [qObj], 1.0, 32,32
  367.  
  368.         stdcall [glColor3f], 1.0, 0.0, 0.0
  369.         stdcall [glTranslatef], -1.6,0.0,0.0
  370.         stdcall [gluSphere], [qObj], 0.55, 16,16
  371.  
  372.         stdcall [glColor3f], 0.0, 0.0, 1.0
  373.         stdcall [glTranslatef], 3.2,0.0,0.0
  374.         stdcall [gluSphere], [qObj], 0.55, 16,16
  375. stdcall [glPopMatrix]
  376.  
  377.         stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
  378.         stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00
  379.         stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,25,0xffff00
  380.         ret
  381.  
  382. align 4
  383. SetLight:
  384.         stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
  385.         stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
  386.  
  387.         stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
  388.         stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
  389.  
  390.         stdcall [glEnable], GL_COLOR_MATERIAL
  391.         stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
  392.         stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
  393.         stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
  394.         stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
  395.  
  396.         stdcall [glEnable],GL_LIGHTING
  397.         stdcall [glEnable],GL_LIGHT0
  398. ret
  399.  
  400. qObj dd 0
  401.  
  402. scale dd 0.4
  403. delt_sc dd 0.05
  404. angle_z dd 0.0
  405. angle_y dd 0.0
  406. delt_size dd 3.0
  407.  
  408. light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2]
  409.         ;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии)
  410. light_dir dd 0.0,0.0,0.0 ;направление лампы
  411. mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика
  412. mat_shininess dd 3.0 ; Размер блика (обратная пропорция)
  413. white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником
  414. lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения
  415.  
  416. ;--------------------------------------------------
  417. align 4
  418. import_lib_tinygl:
  419.  
  420. macro E_LIB n
  421. {
  422.         n dd sz_#n
  423. }
  424. include '../export.inc'
  425.         dd 0,0
  426. macro E_LIB n
  427. {
  428.         sz_#n db `n,0
  429. }
  430. include '../export.inc'
  431.  
  432. align 4
  433. import_buf2d:
  434.         dd sz_init0
  435.         buf2d_create dd sz_buf2d_create
  436.         buf2d_create_f_img dd sz_buf2d_create_f_img
  437.         buf2d_clear dd sz_buf2d_clear
  438.         buf2d_draw dd sz_buf2d_draw
  439.         buf2d_delete dd sz_buf2d_delete
  440.         buf2d_resize dd sz_buf2d_resize
  441.         buf2d_line dd sz_buf2d_line
  442.         buf2d_rect_by_size dd sz_buf2d_rect_by_size
  443.         buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
  444.         buf2d_circle dd sz_buf2d_circle
  445.         buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
  446.         buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
  447.         buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
  448.         buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
  449.         buf2d_bit_blt dd sz_buf2d_bit_blt
  450.         buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
  451.         buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
  452.         buf2d_curve_bezier dd sz_buf2d_curve_bezier
  453.         buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
  454.         buf2d_draw_text dd sz_buf2d_draw_text
  455.         buf2d_crop_color dd sz_buf2d_crop_color
  456.         buf2d_offset_h dd sz_buf2d_offset_h
  457.         buf2d_flood_fill dd sz_buf2d_flood_fill
  458.         buf2d_set_pixel dd sz_buf2d_set_pixel
  459.         dd 0,0
  460.         sz_init0 db 'lib_init',0
  461.         sz_buf2d_create db 'buf2d_create',0
  462.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  463.         sz_buf2d_clear db 'buf2d_clear',0
  464.         sz_buf2d_draw db 'buf2d_draw',0
  465.         sz_buf2d_delete db 'buf2d_delete',0
  466.         sz_buf2d_resize db 'buf2d_resize',0
  467.         sz_buf2d_line db 'buf2d_line',0
  468.         sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
  469.         sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
  470.         sz_buf2d_circle db 'buf2d_circle',0
  471.         sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
  472.         sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
  473.         sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
  474.         sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
  475.         sz_buf2d_bit_blt db 'buf2d_bit_blt',0
  476.         sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
  477.         sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
  478.         sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
  479.         sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
  480.         sz_buf2d_draw_text db 'buf2d_draw_text',0
  481.         sz_buf2d_crop_color db 'buf2d_crop_color',0
  482.         sz_buf2d_offset_h db 'buf2d_offset_h',0
  483.         sz_buf2d_flood_fill db 'buf2d_flood_fill',0
  484.         sz_buf2d_set_pixel db 'buf2d_set_pixel',0
  485.  
  486. align 4
  487. import_libimg:
  488.         dd alib_init1
  489.         img_is_img  dd aimg_is_img
  490.         img_info    dd aimg_info
  491.         img_from_file dd aimg_from_file
  492.         img_to_file dd aimg_to_file
  493.         img_from_rgb dd aimg_from_rgb
  494.         img_to_rgb  dd aimg_to_rgb
  495.         img_to_rgb2 dd aimg_to_rgb2
  496.         img_decode  dd aimg_decode
  497.         img_encode  dd aimg_encode
  498.         img_create  dd aimg_create
  499.         img_destroy dd aimg_destroy
  500.         img_destroy_layer dd aimg_destroy_layer
  501.         img_count   dd aimg_count
  502.         img_lock_bits dd aimg_lock_bits
  503.         img_unlock_bits dd aimg_unlock_bits
  504.         img_flip    dd aimg_flip
  505.         img_flip_layer dd aimg_flip_layer
  506.         img_rotate  dd aimg_rotate
  507.         img_rotate_layer dd aimg_rotate_layer
  508.         img_draw    dd aimg_draw
  509.  
  510.         dd 0,0
  511.         alib_init1   db 'lib_init',0
  512.         aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
  513.         aimg_info    db 'img_info',0
  514.         aimg_from_file db 'img_from_file',0
  515.         aimg_to_file db 'img_to_file',0
  516.         aimg_from_rgb db 'img_from_rgb',0
  517.         aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
  518.         aimg_to_rgb2 db 'img_to_rgb2',0
  519.         aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
  520.         aimg_encode  db 'img_encode',0
  521.         aimg_create  db 'img_create',0
  522.         aimg_destroy db 'img_destroy',0
  523.         aimg_destroy_layer db 'img_destroy_layer',0
  524.         aimg_count   db 'img_count',0
  525.         aimg_lock_bits db 'img_lock_bits',0
  526.         aimg_unlock_bits db 'img_unlock_bits',0
  527.         aimg_flip    db 'img_flip',0
  528.         aimg_flip_layer db 'img_flip_layer',0
  529.         aimg_rotate  db 'img_rotate',0
  530.         aimg_rotate_layer db 'img_rotate_layer',0
  531.         aimg_draw    db 'img_draw',0
  532.  
  533. ;--------------------------------------------------
  534. system_dir_0 db '/sys/lib/'
  535. lib_name_0 db 'tinygl.obj',0
  536. system_dir_1 db '/sys/lib/'
  537. lib_name_1 db 'buf2d.obj',0
  538. system_dir_2 db '/sys/lib/'
  539. lib_name_2 db 'libimg.obj',0
  540. err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0
  541. err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0
  542. err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0
  543. head_f_i:
  544. head_f_l db 'System error',0
  545. err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0
  546. err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0
  547. err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0
  548. ;--------------------------------------------------
  549.  
  550. txt_scale:
  551. db 'Scale: '
  552. .v:
  553. db 0
  554. rb 10
  555.  
  556. txt_angle_z:
  557. db 'Rotate z: '
  558. .v:
  559. db 0
  560. rb 10
  561.  
  562. txt_angle_y:
  563. db 'Rotate y: '
  564. .v:
  565. db 0
  566. rb 10
  567.  
  568. align 4
  569. buf_ogl:
  570.         dd 0 ;указатель на буфер изображения
  571.         dw 10,10 ;+4 left,top
  572. .w: dd 400
  573. .h: dd 350
  574.         dd 0,24 ;+16 color,bit in pixel
  575.  
  576. align 4
  577. buf_1:
  578.         dd 0 ;указатель на буфер изображения
  579.         dw 25,25 ;+4 left,top
  580.         dd 128,144 ;+8 w,h
  581.         dd 0,24 ;+16 color,bit in pixel
  582.  
  583. align 4
  584. l_libs_start:
  585.         lib_0 l_libs lib_name_0, cur_dir_path, library_path,  system_dir_0,\
  586.                 err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i
  587.         lib_1 l_libs lib_name_1, cur_dir_path, library_path,  system_dir_1,\
  588.                 err_msg_found_lib_1, head_f_l, import_buf2d,  err_msg_import_1,head_f_i
  589.         lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\
  590.                 err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
  591. l_libs_end:
  592.  
  593. align 4
  594. i_end:
  595.         run_file_70 FileInfoBlock
  596.         sc system_colors
  597. align 16
  598.         rb 4096
  599. stacktop:
  600.         cur_dir_path rb 4096
  601.         library_path rb 4096
  602.         file_name rb 4096
  603. mem:
  604.