annotate winmain.c @ 1634:c3e08322b8f6

Fixed issues drawing arcs on GTK3 and GTK2 for printing. This issue was seen in the test program with the failure to draw the bottom right arc. GTK2 printing may require some other updates after looking at this change.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 29 Mar 2012 05:16:26 +0000
parents 32b5fba0b00a
children aedf5903db0a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /* Dynamic Windows stub file to allow Win32 applications
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * to use the main() entry point instead of WinMain().
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 #include <windows.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 #include <stdlib.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 #include <string.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
11 #ifndef NODW
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 void Win32_Set_Instance(HINSTANCE hInstance);
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
13 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 char **_convertargs(int *count, char *start, HINSTANCE DWInstance)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 char *tmp, *argstart, **argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 int loc = 0, inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 (*count) = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 tmp = start;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 /* Count the number of entries */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 if(*start)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 (*count)++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 while(*tmp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31 if(*tmp == '"' && inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32 inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33 else if(*tmp == '"' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34 inquotes = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 else if(*tmp == ' ' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 /* Push past any white space */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 while(*(tmp+1) == ' ')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 /* If we aren't at the end of the command
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 * line increment the count.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 if(*(tmp+1))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 (*count)++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 argv = (char **)malloc(sizeof(char *) * ((*count)+1));
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51 argv[0] = malloc(260);
1620
32b5fba0b00a Must convert from UTF8 for the raw HTML on Windows regardless of the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 49
diff changeset
52 GetModuleFileNameA(DWInstance, argv[0], 260);
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54 argstart = tmp = start;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 if(*start)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 loc = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 while(*tmp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62 if(*tmp == '"' && inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64 *tmp = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 else if(*tmp == '"' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
69 argstart = tmp+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
70 inquotes = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72 else if(*tmp == ' ' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74 *tmp = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75 argv[loc] = strdup(argstart);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
76
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 /* Push past any white space */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78 while(*(tmp+1) == ' ')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
79 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
81 /* Move the start pointer */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
82 argstart = tmp+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 /* If we aren't at the end of the command
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 * line increment the count.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 if(*(tmp+1))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 loc++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 if(*argstart)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93 argv[loc] = strdup(argstart);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95 argv[loc+1] = NULL;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96 return argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 /* Ok this is a really big hack but what the hell ;) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102 char **argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 int argc;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
105 #ifndef NODW
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106 Win32_Set_Instance(hInstance);
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
107 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 argv = _convertargs(&argc, lpCmdLine, hInstance);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
110
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111 return main(argc, argv);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
112 }