Rev 5621 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5548 | leency | 1 | #ifndef AUTOBUILD |
2 | #include "lang.h--" |
||
3 | #endif |
||
4 | |||
5 | #define MEMSIZE 397113 |
||
6 | #include "..\lib\kolibri.h" |
||
7 | #include "..\lib\strings.h" |
||
8 | #include "..\lib\mem.h" |
||
9 | #include "..\lib\file_system.h" |
||
10 | #include "..\lib\dll.h" |
||
11 | #include "..\lib\gui.h" |
||
12 | #include "..\lib\obj\truetype.h" |
||
13 | #include "..\lib\obj\proc_lib.h" |
||
14 | |||
15 | #include "simple_open_dialog.h" |
||
16 | char default_dir[] = "/rd/1"; |
||
17 | od_filter filter2 = {"TTF",0}; |
||
18 | |||
19 | dword font_data; |
||
20 | stbtt_fontinfo font_info; |
||
21 | dword font_mem; |
||
22 | |||
23 | system_colors sc; |
||
24 | proc_info Form; |
||
25 | char test_text[] = "The quick brown fox jumps over the lazy dog"; |
||
26 | char win_title[4096] = "TTF Viewer v0.1 - "; |
||
27 | |||
28 | #ifdef LANG_RUS |
||
29 | ?define T_INTRO "Это простая программа для просмотра шрифтов формата TTF" |
||
30 | ?define T_INTRO_BUTTON_TEXT "Открыть шрифт" |
||
31 | #else |
||
32 | ?define T_INTRO "This is simple program to view TTF fonts." |
||
33 | ?define T_INTRO_BUTTON_TEXT "Open font" |
||
34 | #endif |
||
35 | |||
36 | |||
37 | void main() |
||
38 | { |
||
39 | int id, key; |
||
40 | |||
41 | mem_Init(); |
||
5626 | leency | 42 | load_dll(libtruetype, #truetype, 1); |
43 | load_dll(Proc_lib, #OpenDialog_init,0); |
||
5548 | leency | 44 | OpenDialog_init stdcall (#o_dialog); |
45 | |||
46 | if (param[0]) OpenFont(#param); |
||
47 | |||
48 | loop() |
||
49 | { |
||
50 | switch(WaitEvent()) |
||
51 | { |
||
52 | case evButton: |
||
53 | id=GetButtonID(); |
||
54 | if (id==1) ExitProcess(); |
||
55 | if (id==10) |
||
56 | { |
||
57 | OpenDialog_start stdcall (#o_dialog); |
||
58 | OpenFont(#openfile_path); |
||
59 | } |
||
60 | break; |
||
61 | |||
62 | case evKey: |
||
63 | key = GetKey(); |
||
64 | break; |
||
65 | |||
66 | case evReDraw: |
||
67 | draw_window(); |
||
68 | } |
||
69 | } |
||
70 | } |
||
71 | |||
72 | |||
73 | void draw_window() |
||
74 | { |
||
75 | sc.get(); |
||
76 | DefineAndDrawWindow(30, 100, 800, 250+GetSkinHeight(), 0x34, 0xFFFfff, #win_title); |
||
77 | GetProcessInfo(#Form, SelfInfo); |
||
78 | DrawFonts(); |
||
79 | } |
||
80 | |||
81 | |||
82 | word DrawFonts() |
||
83 | { |
||
84 | if (!font_data) |
||
85 | { |
||
86 | WriteTextCenter(0,85,Form.cwidth,0x555555, T_INTRO); |
||
87 | DrawCaptButton(Form.cwidth - 140 / 2, Form.cheight - 30 / 2, 140, 30, 10, sc.work_button, sc.work_button_text, T_INTRO_BUTTON_TEXT); |
||
88 | return; |
||
89 | } |
||
90 | text_out stdcall (#test_text, #font_info, 10, 0x000000, 0xFFFfff, 3, 4); |
||
91 | text_out stdcall (#test_text, #font_info, 12, 0x000000, 0xFFFfff, 3, 18); |
||
92 | text_out stdcall (#test_text, #font_info, 24, 0x000000, 0xFFFfff, 3, 35); |
||
93 | text_out stdcall (#test_text, #font_info, 36, 0x000000, 0xFFFfff, 3, 60); |
||
94 | text_out stdcall (#test_text, #font_info, 48, 0x000000, 0xFFFfff, 3, 110); |
||
95 | text_out stdcall (#test_text, #font_info, 58, 0x000000, 0xFFFfff, 3, 170); |
||
96 | } |
||
97 | |||
98 | |||
99 | void OpenFont(dword font_path) |
||
100 | { |
||
101 | BDVK FontFile_atr; |
||
102 | GetFileInfo(font_path, #FontFile_atr); |
||
103 | font_data = malloc(FontFile_atr.sizelo); |
||
104 | ReadFile(0, FontFile_atr.sizelo, #font_data, font_path); |
||
105 | init_font stdcall (#font_info, #font_data); |
||
106 | if (EAX==0) |
||
107 | { |
||
108 | font_data = 0; |
||
109 | notify("'Can\096t open font: init_font failed' - E"); |
||
110 | } |
||
111 | strcpy(#win_title + 18, font_path); |
||
112 | draw_window(); |
||
113 | } |
||
114 | |||
115 | stop: |