Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/ftvhelp.cpp

Source at commit 1322 created 12 years 8 months ago.
By meklort, Add doxygen to utils folder
1/******************************************************************************
2 * ftvhelp.cpp,v 1.0 2000/09/06 16:09:00
3 *
4 * Copyright (C) 1997-2011 by Dimitri van Heesch.
5 *
6 * Permission to use, copy, modify, and distribute this software and its
7 * documentation under the terms of the GNU General Public License is hereby
8 * granted. No representations are made about the suitability of this software
9 * for any purpose. It is provided "as is" without express or implied warranty.
10 * See the GNU General Public License for more details.
11 *
12 * Documents produced by Doxygen are derivative works derived from the
13 * input used in their production; they are not affected by this license.
14 *
15 * Contributed by Kenney Wong <kwong@ea.com>
16 * Modified by Dimitri van Heesch
17 *
18 * Folder Tree View for offline help on browsers that do not support HTML Help.
19 */
20
21#include <stdio.h>
22#include <stdlib.h>
23#include <qlist.h>
24#include <qdict.h>
25#include <qfileinfo.h>
26
27#include "ftvhelp.h"
28#include "config.h"
29#include "message.h"
30#include "doxygen.h"
31#include "language.h"
32#include "htmlgen.h"
33#include "layout.h"
34
35#define MAX_INDENT 1024
36
37
38static const char navtree_script[]=
39#include "navtree_js.h"
40;
41
42static const char resize_script[]=
43#include "resize_js.h"
44;
45
46#if 0
47static const char jquery_script1[]=
48#include "jquery_js.h"
49;
50static const char jquery_script2[]=
51#include "sizzle_js.h"
52;
53static const char jquery_script3[]=
54#include "jquery_ui_js.h"
55;
56#endif
57
58static const char navtree_css[]=
59#include "navtree_css.h"
60;
61
62
63#if 0
64unsigned char ftv2blank_png[] = {
65 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
66 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
67 0x01, 0x00, 0x00, 0x00, 0x01, 0x96, 0xd6, 0x11, 0x47, 0x00, 0x00, 0x00,
68 0x02, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x01, 0x01, 0x94, 0xfd, 0xae, 0x00,
69 0x00, 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77,
70 0x61, 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20,
71 0x32, 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00,
72 0x25, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
73 0x00, 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53,
74 0x6d, 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65,
75 0x72, 0x20, 0x32, 0x2e, 0x30, 0x21, 0xf8, 0xd7, 0x5e, 0x53, 0x00, 0x00,
76 0x00, 0x14, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x38, 0xc0, 0x80,
77 0x80, 0x1f, 0x30, 0xe0, 0x7f, 0x42, 0x90, 0x00, 0x02, 0x00, 0x78, 0x3c,
78 0x32, 0xcb, 0x72, 0x8f, 0x7c, 0x12, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
79 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
80};
81
82unsigned char ftv2doc_png[] = {
83 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
84 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
85 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
86 0x15, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
87 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
88 0x00, 0xff, 0xb3, 0xbd, 0xfb, 0xc8, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
89 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
90 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
91 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
92 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x76, 0x49, 0x44, 0x41,
93 0x54, 0x78, 0xda, 0x63, 0x60, 0x60, 0x60, 0x60, 0x63, 0x60, 0x60, 0x64,
94 0x00, 0x01, 0x27, 0x30, 0x62, 0x71, 0x01, 0xe2, 0x24, 0x06, 0x38, 0x60,
95 0x71, 0x00, 0xca, 0x27, 0x33, 0x30, 0x30, 0x01, 0x31, 0xa3, 0x32, 0x03,
96 0x0a, 0x70, 0x54, 0x32, 0x01, 0x53, 0x69, 0x60, 0x71, 0x27, 0x08, 0x15,
97 0x1a, 0x1a, 0xca, 0x80, 0x01, 0x5c, 0x5c, 0xc0, 0x94, 0xa2, 0x90, 0x02,
98 0x88, 0x52, 0x4b, 0x52, 0x05, 0x53, 0x69, 0xc8, 0x94, 0x18, 0x84, 0x52,
99 0x52, 0x12, 0xc5, 0x69, 0x0a, 0x36, 0xe0, 0xa4, 0xa4, 0xa4, 0x68, 0x82,
100 0xc4, 0x51, 0x82, 0x6b, 0x04, 0x71, 0x14, 0x4d, 0x61, 0x4e, 0x55, 0x04,
101 0xf2, 0x60, 0x1c, 0x27, 0x45, 0x24, 0x19, 0x90, 0x01, 0x70, 0x19, 0x67,
102 0x63, 0x20, 0x30, 0xc5, 0x6f, 0x23, 0x00, 0xf5, 0xd0, 0x11, 0xe0, 0x55,
103 0x83, 0x47, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
104 0x42, 0x60, 0x82
105};
106
107unsigned char ftv2folderclosed_png[] = {
108 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
109 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
110 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
111 0x12, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
112 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x42,
113 0xee, 0x40, 0xe1, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00,
114 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 0x45, 0x58, 0x74,
115 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x67, 0x69, 0x66,
116 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e,
117 0x47, 0x0e, 0x00, 0x00, 0x00, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
118 0x8d, 0x8e, 0xc1, 0x0a, 0x84, 0x30, 0x10, 0x43, 0x23, 0x8c, 0x77, 0x0f,
119 0xfb, 0x03, 0x42, 0xbd, 0x2b, 0xf8, 0x01, 0x65, 0x6d, 0xef, 0xa2, 0xcd,
120 0xff, 0xff, 0x8a, 0x33, 0xad, 0xee, 0x5a, 0xf6, 0xb0, 0x06, 0xda, 0xf0,
121 0x86, 0xa6, 0x13, 0x00, 0x88, 0x40, 0x03, 0x53, 0x02, 0x82, 0x9a, 0xd7,
122 0x51, 0x42, 0x25, 0xae, 0x7a, 0x76, 0xa0, 0xed, 0xea, 0x79, 0x79, 0x17,
123 0x49, 0x73, 0xe1, 0xf2, 0x32, 0x14, 0x8f, 0x5f, 0x49, 0xb9, 0xed, 0x23,
124 0x60, 0x20, 0xcd, 0x36, 0x66, 0xe4, 0x40, 0x4b, 0xb4, 0xdb, 0xdb, 0xe5,
125 0x16, 0xee, 0x16, 0x78, 0x20, 0xf9, 0x96, 0x15, 0x6d, 0xc2, 0x8b, 0xa2,
126 0x6e, 0xf9, 0x50, 0x64, 0xa6, 0x70, 0xb6, 0x50, 0x0a, 0xd3, 0x78, 0x86,
127 0x98, 0xa6, 0xde, 0x5d, 0x9d, 0x25, 0xcd, 0xfe, 0xdf, 0xc6, 0x03, 0xa0,
128 0x13, 0x15, 0x98, 0x60, 0xbd, 0x81, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x49,
129 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
130};
131
132unsigned char ftv2folderopen_png[] = {
133 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
134 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
135 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
136 0x15, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
137 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80,
138 0x00, 0x80, 0x92, 0x32, 0x8c, 0xe5, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
139 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
140 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
141 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
142 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x7c, 0x49, 0x44, 0x41,
143 0x54, 0x78, 0xda, 0x85, 0x8d, 0x41, 0x0e, 0x82, 0x30, 0x10, 0x45, 0x5f,
144 0x08, 0xf5, 0x1e, 0x2d, 0x53, 0xd6, 0xc6, 0x18, 0xd7, 0x8d, 0x18, 0xd7,
145 0x06, 0xd2, 0x1e, 0xa0, 0xb1, 0xde, 0xff, 0x08, 0x3a, 0x20, 0x21, 0x10,
146 0xa2, 0x6f, 0xf3, 0xfe, 0xff, 0x8b, 0x19, 0x80, 0x0a, 0x6a, 0x14, 0x81,
147 0x3c, 0x06, 0x2a, 0x61, 0xc5, 0xd3, 0x43, 0x69, 0xc1, 0xb4, 0xab, 0xf9,
148 0x70, 0xac, 0x83, 0xca, 0xbb, 0xfb, 0xa4, 0x8b, 0xae, 0x26, 0x46, 0xb6,
149 0x4c, 0x0f, 0xe8, 0xc3, 0x18, 0xfa, 0xb3, 0x7d, 0xa8, 0x1a, 0xeb, 0x17,
150 0xa5, 0x46, 0x54, 0x46, 0x4e, 0x2a, 0xe2, 0xce, 0x95, 0x3d, 0xba, 0xb0,
151 0x64, 0x93, 0x85, 0x9b, 0x0b, 0x73, 0x71, 0x83, 0x75, 0xd7, 0xf2, 0xa7,
152 0x90, 0xf2, 0x20, 0x9d, 0xfb, 0x16, 0xd2, 0xeb, 0x43, 0xf9, 0xfd, 0xf2,
153 0x0d, 0xa4, 0x29, 0x14, 0xcb, 0xda, 0x47, 0xac, 0x44, 0x00, 0x00, 0x00,
154 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
155};
156
157unsigned char ftv2lastnode_png[] = {
158 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
159 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
160 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
161 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00,
166 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
167 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
168 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
169 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
170 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
171 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
172 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
173 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00,
174 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30,
175 0xc0, 0x4f, 0x0c, 0x03, 0x04, 0xc8, 0x33, 0x1e, 0x00, 0x24, 0xa7, 0x00,
176 0x88, 0x10, 0xca, 0x33, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
177 0x44, 0xae, 0x42, 0x60, 0x82
178};
179
180unsigned char ftv2link_png[] = {
181 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
182 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
183 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
184 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x80, 0x00, 0xff,
185 0xff, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x00, 0x80, 0x80, 0x80,
186 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0x9b, 0x08, 0x00, 0x00, 0x00,
189 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
190 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
191 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
192 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
193 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
194 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
195 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
196 0x20, 0x32, 0x2e, 0x30, 0x19, 0x02, 0xd9, 0x09, 0xe5, 0x4a, 0x00, 0x00,
197 0x00, 0x90, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x7d, 0x8c, 0xb1, 0x0a,
198 0xc2, 0x30, 0x14, 0x45, 0x6f, 0x33, 0xb4, 0x63, 0x7e, 0xa1, 0x53, 0x57,
199 0x8b, 0x7e, 0x80, 0x6e, 0xae, 0x16, 0x5a, 0xb2, 0xbe, 0x3a, 0x64, 0x35,
200 0xb8, 0x64, 0xec, 0x2f, 0x07, 0x05, 0x1d, 0x9f, 0x79, 0x8d, 0x21, 0x50,
201 0xd0, 0x03, 0xc9, 0xcd, 0xe1, 0xbe, 0x17, 0x00, 0xa8, 0x00, 0x82, 0xe0,
202 0x81, 0x66, 0x7d, 0xc0, 0x9e, 0x51, 0x70, 0x40, 0x1d, 0xcf, 0xad, 0x07,
203 0x18, 0x1b, 0x74, 0x90, 0xdb, 0x1c, 0x62, 0x0f, 0xe2, 0x20, 0xc1, 0xcc,
204 0x61, 0x3b, 0x06, 0x6a, 0xbb, 0x14, 0x3b, 0xe9, 0x68, 0xba, 0xac, 0x51,
205 0x9d, 0x24, 0xec, 0xdc, 0x4b, 0x68, 0xed, 0xd2, 0x5e, 0x1b, 0x7e, 0xfd,
206 0x92, 0xa8, 0x6d, 0x84, 0xb2, 0x28, 0x28, 0x38, 0xca, 0xd2, 0x4c, 0x46,
207 0x2d, 0x59, 0xcc, 0x38, 0x5c, 0x8b, 0xcc, 0xe3, 0xfe, 0x2b, 0x71, 0xfa,
208 0x79, 0xbc, 0x67, 0x79, 0x85, 0x07, 0x54, 0x69, 0xde, 0xde, 0x2f, 0xf8,
209 0xcf, 0x07, 0x71, 0x95, 0x2b, 0xa1, 0x10, 0x78, 0xd0, 0xff, 0x00, 0x00,
210 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
211};
212
213unsigned char ftv2mlastnode_png[] = {
214 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
215 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
216 0x02, 0x03, 0x00, 0x00, 0x01, 0xc3, 0xc3, 0xc4, 0x79, 0x00, 0x00, 0x00,
217 0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x00,
218 0x00, 0x00, 0x3c, 0x5e, 0xbb, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
219 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
220 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
221 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
222 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x23, 0x49, 0x44, 0x41,
223 0x54, 0x78, 0xda, 0x63, 0x60, 0x20, 0x0b, 0x08, 0x08, 0x20, 0x10, 0x0a,
224 0x60, 0x84, 0x11, 0x8c, 0xa1, 0xa1, 0x20, 0x06, 0x90, 0xc9, 0xa8, 0xb5,
225 0x50, 0x10, 0xca, 0x02, 0x89, 0x61, 0x01, 0x00, 0x6d, 0x17, 0x02, 0xba,
226 0xc0, 0xdc, 0x69, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
227 0xae, 0x42, 0x60, 0x82
228};
229
230unsigned char ftv2mnode_png[] = {
231 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
232 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
233 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
234 0x24, 0x50, 0x4c, 0x54, 0x45, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0x80, 0x80, 0x80, 0x53, 0xbe, 0x1e, 0x99, 0x00, 0x00, 0x00,
238 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
239 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
240 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
241 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x2a,
242 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xa0, 0x2e, 0xe0, 0x06,
243 0x42, 0x74, 0x02, 0xa7, 0x52, 0x54, 0x06, 0xf7, 0x6e, 0x20, 0x80, 0xf1,
244 0xc1, 0x62, 0xdc, 0x4c, 0x4a, 0x4a, 0xdc, 0xdc, 0xdc, 0xc8, 0x22, 0x30,
245 0x35, 0x98, 0xda, 0xd1, 0x19, 0x00, 0xb7, 0x79, 0x07, 0x27, 0xaa, 0xf7,
246 0x96, 0x03, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
247 0x60, 0x82
248};
249
250unsigned char ftv2node_png[] = {
251 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
252 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
253 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
254 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
258 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00,
259 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
260 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
261 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
262 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
263 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
264 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
265 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
266 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00,
267 0x00, 0x15, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30,
268 0xc0, 0x4f, 0x0c, 0x03, 0x04, 0x88, 0x56, 0x8c, 0xc2, 0x00, 0x00, 0x2e,
269 0x52, 0x00, 0xe2, 0xfa, 0x45, 0x3a, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x49,
270 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
271};
272
273unsigned char ftv2plastnode_png[] = {
274 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
275 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
276 0x02, 0x03, 0x00, 0x00, 0x01, 0xc3, 0xc3, 0xc4, 0x79, 0x00, 0x00, 0x00,
277 0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x00,
278 0x00, 0x00, 0x3c, 0x5e, 0xbb, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
279 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
280 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
281 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
282 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x49, 0x44, 0x41,
283 0x54, 0x78, 0xda, 0x63, 0x60, 0x20, 0x0b, 0x08, 0x08, 0x30, 0x08, 0x81,
284 0x11, 0x90, 0x81, 0x02, 0x18, 0x61, 0x04, 0x63, 0x68, 0x28, 0x90, 0x60,
285 0x02, 0x32, 0x19, 0xb5, 0x16, 0x0a, 0x42, 0x59, 0x20, 0x31, 0x2c, 0x00,
286 0x00, 0x6e, 0xc1, 0x02, 0xc2, 0xe5, 0xed, 0x75, 0xa7, 0x00, 0x00, 0x00,
287 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
288};
289
290unsigned char ftv2pnode_png[] = {
291 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
292 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
293 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
294 0x24, 0x50, 0x4c, 0x54, 0x45, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
296 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
297 0x00, 0x00, 0x80, 0x80, 0x80, 0x53, 0xbe, 0x1e, 0x99, 0x00, 0x00, 0x00,
298 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
299 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
300 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
301 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x30,
302 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xa0, 0x2e, 0xe0, 0x06,
303 0x42, 0x06, 0x6e, 0x26, 0x38, 0x01, 0xe2, 0xe2, 0x54, 0x8a, 0xca, 0xe0,
304 0xde, 0x0d, 0x04, 0x10, 0x3e, 0x13, 0x44, 0x8c, 0x9b, 0x49, 0x49, 0x89,
305 0x9b, 0x9b, 0x1b, 0x59, 0x04, 0xa6, 0x06, 0x53, 0x3b, 0x3a, 0x03, 0x00,
306 0xba, 0x6b, 0x07, 0x2f, 0xaa, 0xcb, 0x1f, 0x6f, 0x00, 0x00, 0x00, 0x00,
307 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
308};
309
310unsigned char ftv2vertline_png[] = {
311 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
312 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
313 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
314 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
315 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
318 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00,
319 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
320 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
321 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
322 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
323 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
324 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
325 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
326 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00,
327 0x00, 0x0f, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30,
328 0xc0, 0x4f, 0x5b, 0x06, 0x00, 0x21, 0x14, 0x00, 0xa6, 0xe5, 0x3c, 0xe8,
329 0x3a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
330 0x82
331};
332#endif
333
334
335static unsigned char blank_png[352] =
336{
337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
359};
360
361static unsigned char folderopen_png[528] =
362{
363 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
364 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
365 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
366 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
367 255,255,255,255,255,255,228,195,193,190,187,218,255,255,255,255,255,255,255,255,255,255,255,255,
368 255,255,255,255,255,255,195,215,221,225,225,178,176,176,175,176,178,180,255,255,255,255,255,255,
369 255,255,255,255,255,255,189,206,215,219,226,220,214,212,207,204,200,176,255,255,255,255,255,255,
370 255,255,255,255,168,154,153,153,152,152,151,149,150,150,149,147,146,145,145,167,255,255,255,255,
371 255,255,255,255,146,187,187,188,187,187,185,183,183,182,179,178,175,173,174,145,255,255,255,255,
372 255,255,255,255,146,180,182,182,181,181,179,178,176,174,173,171,169,170,168,144,255,255,255,255,
373 255,255,255,255,144,173,176,176,177,175,175,174,171,170,168,168,166,166,164,143,255,255,255,255,
374 255,255,255,255,142,168,170,171,170,170,169,168,166,166,165,163,163,164,162,142,255,255,255,255,
375 255,255,255,255,141,162,166,164,164,165,163,163,161,161,161,161,161,160,159,141,255,255,255,255,
376 255,255,255,255,138,157,159,159,158,158,158,157,157,157,157,156,157,157,155,138,255,255,255,255,
377 255,255,255,255,137,154,153,154,154,153,154,154,154,153,154,154,154,154,154,137,255,255,255,255,
378 255,255,255,255,137,154,154,154,154,154,154,154,153,154,154,153,153,153,154,137,255,255,255,255,
379 255,255,255,255,137,125,125,125,125,124,125,124,124,125,124,124,125,124,125,138,255,255,255,255,
380 255,255,255,255,212,209,204,199,193,190,186,183,180,181,185,188,192,197,202,203,255,255,255,255,
381 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
382 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
383 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
384 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
385};
386
387static unsigned char folderopen_a_png[528] =
388{
389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,
395 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,
396 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
397 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
398 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
399 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
400 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
401 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
402 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
403 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
404 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
405 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
406 0, 0, 0, 0,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
411};
412
413static unsigned char folderclosed_png[528] =
414{
415 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
416 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
417 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
418 255,255,255,255,255,197,155,155,155,155,196,255,255,255,255,255,255,255,255,255,255,255,255,255,
419 255,255,255,255,255,155,191,191,191,192,155,255,255,255,255,255,255,255,255,255,255,255,255,255,
420 255,255,255,255,168,144,180,180,181,180,145,145,146,145,146,146,146,146,145,167,255,255,255,255,
421 255,255,255,255,147,225,226,226,225,226,225,221,221,219,215,214,212,211,213,145,255,255,255,255,
422 255,255,255,255,147,212,211,211,210,211,210,205,206,205,201,201,199,196,201,145,255,255,255,255,
423 255,255,255,255,146,204,203,204,203,203,202,200,200,197,197,196,195,194,196,145,255,255,255,255,
424 255,255,255,255,146,202,200,201,201,200,199,198,198,195,194,194,193,192,194,145,255,255,255,255,
425 255,255,255,255,145,200,196,196,196,195,195,193,192,192,190,189,189,189,191,143,255,255,255,255,
426 255,255,255,255,143,192,191,190,190,189,189,188,186,187,186,185,185,185,187,142,255,255,255,255,
427 255,255,255,255,142,186,184,183,182,183,182,183,180,181,181,181,181,181,182,141,255,255,255,255,
428 255,255,255,255,138,177,175,176,176,177,177,176,175,174,175,175,175,174,176,138,255,255,255,255,
429 255,255,255,255,138,173,169,170,168,170,169,170,170,169,171,171,171,171,174,137,255,255,255,255,
430 255,255,255,255,138,166,163,163,162,162,162,162,162,162,164,163,163,163,166,137,255,255,255,255,
431 255,255,255,255,137,124,124,124,125,124,124,124,125,125,124,124,125,124,125,138,255,255,255,255,
432 255,255,255,255,231,231,228,225,222,220,218,216,214,215,217,219,221,224,227,226,255,255,255,255,
433 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
434 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
435 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
436 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
437};
438
439static unsigned char folderclosed_a_png[528] =
440{
441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
444 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
445 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
446 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
447 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
448 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
449 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
450 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
451 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
452 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
453 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
454 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
455 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
456 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
457 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
458 0, 0, 0, 0,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, 0, 0, 0, 0,
459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
463};
464
465static unsigned char doc_png[528] =
466{
467 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
468 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
469 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
470 255,255,255,255,255,218,214,208,208,204,191,179,190,197,209,231,255,255,255,255,255,255,255,255,
471 255,255,255,255,255,195,224,226,226,222,214,204,181,203,229,188,225,255,255,255,255,255,255,255,
472 255,255,255,255,255,198,226,228,227,227,224,215,203,180,252,229,184,224,255,255,255,255,255,255,
473 255,255,255,255,255,198,229,230,229,229,228,224,214,154,252,252,229,187,235,255,255,255,255,255,
474 255,255,255,255,255,198,232,233,233,232,231,230,223,176,154,144,165,177,216,255,255,255,255,255,
475 255,255,255,255,255,198,236,236,216,226,238,219,232,225,209,190,189,166,193,255,255,255,255,255,
476 255,255,255,255,255,198,239,240,178,177,230,175,169,184,188,219,208,189,187,255,255,255,255,255,
477 255,255,255,255,255,198,241,242,240,218,237,236,240,235,241,244,221,208,182,255,255,255,255,255,
478 255,255,255,255,255,198,243,243,188,154,183,158,166,140,185,198,231,219,177,255,255,255,255,255,
479 255,255,255,255,255,198,243,245,248,228,241,241,226,249,237,227,239,232,177,255,255,255,255,255,
480 255,255,255,255,255,198,244,246,213,172,163,149,171,200,167,149,242,239,177,255,255,255,255,255,
481 255,255,255,255,255,198,249,248,240,218,237,236,240,235,241,244,244,242,177,255,255,255,255,255,
482 255,255,255,255,255,198,249,251,188,155,184,158,166,140,185,198,246,244,177,255,255,255,255,255,
483 255,255,255,255,255,198,251,253,248,228,241,241,226,249,237,227,249,246,177,255,255,255,255,255,
484 255,255,255,255,255,196,253,252,252,252,252,251,251,250,250,249,249,248,175,255,255,255,255,255,
485 255,255,255,255,255,194, 64, 30, 37, 37, 37, 37, 37, 37, 37, 37, 30, 64,188,255,255,255,255,255,
486 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
487 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
488 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
489};
490
491static unsigned char doc_a_png[528] =
492{
493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,
499 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
503 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
504 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
506 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
507 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
508 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
509 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
510 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
515};
516
517static unsigned char arrow_right_png[352] =
518{
519 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
520 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
521 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
522 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
523 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
524 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
525 255,255,255,152,152,255,255,255,255,255,255,255,255,255,255,255,
526 255,255,255,152,152,152,152,255,255,255,255,255,255,255,255,255,
527 255,255,255,152,152,152,152,152,255,255,255,255,255,255,255,255,
528 255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,255,
529 255,255,255,152,152,152,152,152,152,152,152,255,255,255,255,255,
530 255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,255,
531 255,255,255,152,152,152,152,152,255,255,255,255,255,255,255,255,
532 255,255,255,152,152,152,152,255,255,255,255,255,255,255,255,255,
533 255,255,255,152,152,255,255,255,255,255,255,255,255,255,255,255,
534 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
535 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
536 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
537 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
538 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
539 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
540 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
541};
542
543static unsigned char arrow_right_a_png[352] =
544{
545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551 0, 0, 0,223, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
552 0, 0, 0,255,255,176, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
553 0, 0, 0,255,255,255,248,117, 0, 0, 0, 0, 0, 0, 0, 0,
554 0, 0, 0,255,255,255,255,255,211, 60, 0, 0, 0, 0, 0, 0,
555 0, 0, 0,255,255,255,255,255,255,255, 77, 0, 0, 0, 0, 0,
556 0, 0, 0,255,255,255,255,255,211, 60, 0, 0, 0, 0, 0, 0,
557 0, 0, 0,255,255,255,248,117, 0, 0, 0, 0, 0, 0, 0, 0,
558 0, 0, 0,255,255,176, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
559 0, 0, 0,223, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
567};
568
569static unsigned char arrow_down_png[352] =
570{
571 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
572 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
573 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
574 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
575 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
576 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
577 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
578 255,255,255,152,152,152,152,152,152,152,152,152,255,255,255,255,
579 255,255,255,152,152,152,152,152,152,152,152,152,255,255,255,255,
580 255,255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,
581 255,255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,
582 255,255,255,255,255,152,152,152,152,152,255,255,255,255,255,255,
583 255,255,255,255,255,255,152,152,152,255,255,255,255,255,255,255,
584 255,255,255,255,255,255,152,152,152,255,255,255,255,255,255,255,
585 255,255,255,255,255,255,255,152,255,255,255,255,255,255,255,255,
586 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
587 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
588 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
589 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
590 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
591 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
592 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
593};
594
595static unsigned char arrow_down_a_png[352] =
596{
597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0, 0,231,255,255,255,255,255,255,255,216, 0, 0, 0, 0,
605 0, 0, 0, 87,255,255,255,255,255,255,255, 65, 0, 0, 0, 0,
606 0, 0, 0, 0,186,255,255,255,255,255,164, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 38,251,255,255,255,241, 25, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0,127,255,255,255,107, 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0,221,255,204, 0, 0, 0, 0, 0, 0, 0,
610 0, 0, 0, 0, 0, 0, 72,253, 52, 0, 0, 0, 0, 0, 0, 0,
611 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
619};
620
621#define SPLITBAR_LINE 170,242,224,202,183,170
622#define SPLITBAR_BLOCK2 SPLITBAR_LINE , SPLITBAR_LINE
623#define SPLITBAR_BLOCK4 SPLITBAR_BLOCK2 , SPLITBAR_BLOCK2
624#define SPLITBAR_BLOCK8 SPLITBAR_BLOCK4 , SPLITBAR_BLOCK4
625#define SPLITBAR_BLOCK16 SPLITBAR_BLOCK8 , SPLITBAR_BLOCK8
626#define SPLITBAR_BLOCK32 SPLITBAR_BLOCK16 , SPLITBAR_BLOCK16
627
628#define SPLITBAR_ALTLINE1 170,242,170,202,170,170
629#define SPLITBAR_ALTLINE2 170,243,224,255,183,255
630#define SPLITBAR_ALTBLOCK2 SPLITBAR_ALTLINE1 , SPLITBAR_ALTLINE2
631#define SPLITBAR_ALTBLOCK4 SPLITBAR_ALTBLOCK2 , SPLITBAR_ALTBLOCK2
632#define SPLITBAR_ALTBLOCK8 SPLITBAR_ALTBLOCK4 , SPLITBAR_ALTBLOCK4
633
634static unsigned char splitbar_png[32*32*6] =
635{
636 SPLITBAR_BLOCK32,
637 SPLITBAR_BLOCK32,
638 SPLITBAR_BLOCK32,
639 SPLITBAR_BLOCK32,
640 SPLITBAR_BLOCK32,
641 SPLITBAR_BLOCK32,
642 SPLITBAR_BLOCK32,
643 SPLITBAR_BLOCK32,
644 SPLITBAR_BLOCK32,
645 SPLITBAR_BLOCK32,
646 SPLITBAR_BLOCK32,
647 SPLITBAR_BLOCK32,
648 SPLITBAR_BLOCK32,
649 SPLITBAR_BLOCK32,
650 SPLITBAR_BLOCK32,
651 SPLITBAR_BLOCK8,
652 SPLITBAR_BLOCK8,
653 SPLITBAR_ALTBLOCK8,
654 SPLITBAR_BLOCK8,
655 SPLITBAR_BLOCK32,
656 SPLITBAR_BLOCK32,
657 SPLITBAR_BLOCK32,
658 SPLITBAR_BLOCK32,
659 SPLITBAR_BLOCK32,
660 SPLITBAR_BLOCK32,
661 SPLITBAR_BLOCK32,
662 SPLITBAR_BLOCK32,
663 SPLITBAR_BLOCK32,
664 SPLITBAR_BLOCK32,
665 SPLITBAR_BLOCK32,
666 SPLITBAR_BLOCK32,
667 SPLITBAR_BLOCK32,
668 SPLITBAR_BLOCK32,
669 SPLITBAR_BLOCK32,
670 SPLITBAR_BLOCK32
671};
672
673struct FTVImageInfo
674{
675 const char *alt;
676 const char *name;
677 const unsigned char *data;
678 unsigned int len;
679 unsigned short width, height;
680};
681
682//extern FTVImageInfo image_info[];
683
684#define FTVIMG_blank 0
685#define FTVIMG_doc 1
686#define FTVIMG_folderclosed 2
687#define FTVIMG_folderopen 3
688#define FTVIMG_lastnode 4
689#define FTVIMG_link 5
690#define FTVIMG_mlastnode 6
691#define FTVIMG_mnode 7
692#define FTVIMG_node 8
693#define FTVIMG_plastnode 9
694#define FTVIMG_pnode 10
695#define FTVIMG_vertline 11
696
697#define FTV_S(name) #name
698#define FTV_ICON_FILE(name) "ftv2" FTV_S(name) ".png"
699#define FTVIMG_INDEX(name) FTVIMG_ ## name
700#define FTV_INFO(name) ( image_info[FTVIMG_INDEX(name)] )
701#define FTV_IMGATTRIBS(name) \
702 "src=\"" FTV_ICON_FILE(name) "\" " \
703 "alt=\"" << FTV_INFO(name).alt << "\" " \
704 "width=\"" << FTV_INFO(name).width << "\" " \
705 "height=\"" << FTV_INFO(name).height << "\" "
706
707
708static FTVImageInfo image_info[] =
709{
710 { "&#160;", "ftv2blank.png", 0 /*ftv2blank_png*/ ,174,16,22 },
711 { "*", "ftv2doc.png", 0 /*ftv2doc_png*/ ,255,24,22 },
712 { "+", "ftv2folderclosed.png", 0 /*ftv2folderclosed_png*/ ,259,24,22 },
713 { "-", "ftv2folderopen.png", 0 /*ftv2folderopen_png*/ ,261,24,22 },
714 { "\\", "ftv2lastnode.png", 0 /*ftv2lastnode_png*/ ,233,16,22 },
715 { "-", "ftv2link.png", 0 /*ftv2link_png*/ ,358,24,22 },
716 { "\\", "ftv2mlastnode.png", 0 /*ftv2mlastnode_png*/ ,160,16,22 },
717 { "o", "ftv2mnode.png", 0 /*ftv2mnode_png*/ ,194,16,22 },
718 { "o", "ftv2node.png", 0 /*ftv2node_png*/ ,235,16,22 },
719 { "\\", "ftv2plastnode.png", 0 /*ftv2plastnode_png*/ ,165,16,22 },
720 { "o", "ftv2pnode.png", 0 /*ftv2pnode_png*/ ,200,16,22 },
721 { "|", "ftv2vertline.png", 0 /*ftv2vertline_png*/ ,229,16,22 },
722 { 0, 0, 0, 0, 0, 0 }
723};
724
725static ColoredImgDataItem ftv_image_data[] =
726{
727 { "ftv2blank.png", 16, 22, blank_png, blank_png },
728 { "ftv2doc.png", 24, 22, doc_png, doc_a_png },
729 { "ftv2folderclosed.png", 24, 22, folderclosed_png, folderclosed_a_png },
730 { "ftv2folderopen.png", 24, 22, folderopen_png, folderopen_a_png },
731 { "ftv2lastnode.png", 16, 22, blank_png, blank_png },
732 { "ftv2link.png", 24, 22, doc_png, doc_a_png },
733 { "ftv2mlastnode.png", 16, 22, arrow_down_png, arrow_down_a_png },
734 { "ftv2mnode.png", 16, 22, arrow_down_png, arrow_down_a_png },
735 { "ftv2node.png", 16, 22, blank_png, blank_png },
736 { "ftv2plastnode.png", 16, 22, arrow_right_png, arrow_right_a_png },
737 { "ftv2pnode.png", 16, 22, arrow_right_png, arrow_right_a_png },
738 { "ftv2vertline.png", 16, 22, blank_png, blank_png },
739 { "ftv2splitbar.png", 6,1024, splitbar_png, 0 },
740 { 0, 0, 0, 0, 0 }
741};
742
743struct FTVNode
744{
745 FTVNode(bool dir,const char *r,const char *f,const char *a,const char *n)
746 : isLast(TRUE), isDir(dir),ref(r),file(f),anchor(a),name(n),
747 parent(0) { children.setAutoDelete(TRUE); }
748 bool isLast;
749 bool isDir;
750 QCString ref;
751 QCString file;
752 QCString anchor;
753 QCString name;
754 QList<FTVNode> children;
755 FTVNode *parent;
756};
757
758
759//----------------------------------------------------------------------------
760
761/*! Constructs an ftv help object.
762 * The object has to be \link initialize() initialized\endlink before it can
763 * be used.
764 */
765FTVHelp::FTVHelp(bool TLI)
766{
767 /* initial depth */
768 m_indentNodes = new QList<FTVNode>[MAX_INDENT];
769 m_indentNodes[0].setAutoDelete(TRUE);
770 m_indent=0;
771 m_topLevelIndex = TLI;
772}
773
774FTVHelp::~FTVHelp()
775{
776 delete[] m_indentNodes;
777}
778
779/*! This will create a folder tree view table of contents file (tree.js).
780 * \sa finalize()
781 */
782void FTVHelp::initialize()
783{
784}
785
786/*! Finalizes the FTV help. This will finish and close the
787 * contents file (index.js).
788 * \sa initialize()
789 */
790void FTVHelp::finalize()
791{
792 generateTreeView();
793}
794
795/*! Increase the level of the contents hierarchy.
796 * This will start a new sublist in contents file.
797 * \sa decContentsDepth()
798 */
799void FTVHelp::incContentsDepth()
800{
801 m_indent++;
802 ASSERT(m_indent<MAX_INDENT);
803}
804
805/*! Decrease the level of the contents hierarchy.
806 * This will end the current sublist.
807 * \sa incContentsDepth()
808 */
809void FTVHelp::decContentsDepth()
810{
811 ASSERT(m_indent>0);
812 if (m_indent>0)
813 {
814 m_indent--;
815 QList<FTVNode> *nl = &m_indentNodes[m_indent];
816 FTVNode *parent = nl->getLast();
817 QList<FTVNode> *children = &m_indentNodes[m_indent+1];
818 while (!children->isEmpty())
819 {
820 parent->children.append(children->take(0));
821 }
822 }
823}
824
825/*! Add a list item to the contents file.
826 * \param isDir TRUE if the item is a directory, FALSE if it is a text
827 * \param ref the URL of to the item.
828 * \param file the file containing the definition of the item
829 * \param anchor the anchor within the file.
830 * \param name the name of the item.
831 */
832void FTVHelp::addContentsItem(bool isDir,
833 const char *name,
834 const char *ref,
835 const char *file,
836 const char *anchor
837 )
838{
839 QList<FTVNode> *nl = &m_indentNodes[m_indent];
840 FTVNode *newNode = new FTVNode(isDir,ref,file,anchor,name);
841 if (!nl->isEmpty())
842 {
843 nl->getLast()->isLast=FALSE;
844 }
845 nl->append(newNode);
846 if (m_indent>0)
847 {
848 QList<FTVNode> *pnl = &m_indentNodes[m_indent-1];
849 newNode->parent = pnl->getLast();
850 }
851
852}
853
854static int folderId=1;
855
856void FTVHelp::generateIndent(FTextStream &t, FTVNode *n,int level)
857{
858 if (n->parent)
859 {
860 generateIndent(t,n->parent,level+1);
861 }
862 // from the root up to node n do...
863 if (level==0) // item before a dir or document
864 {
865 if (n->isLast)
866 {
867 if (n->isDir)
868 {
869 t << "<img " << FTV_IMGATTRIBS(plastnode) << "onclick=\"toggleFolder('folder" << folderId << "', this)\"/>";
870 }
871 else
872 {
873 t << "<img " << FTV_IMGATTRIBS(lastnode) << "/>";
874 }
875 }
876 else
877 {
878 if (n->isDir)
879 {
880 t << "<img " << FTV_IMGATTRIBS(pnode) << "onclick=\"toggleFolder('folder" << folderId << "', this)\"/>";
881 }
882 else
883 {
884 t << "<img " << FTV_IMGATTRIBS(node) << "/>";
885 }
886 }
887 }
888 else // item at another level
889 {
890 if (n->isLast)
891 {
892 t << "<img " << FTV_IMGATTRIBS(blank) << "/>";
893 }
894 else
895 {
896 t << "<img " << FTV_IMGATTRIBS(vertline) << "/>";
897 }
898 }
899}
900
901void FTVHelp::generateLink(FTextStream &t,FTVNode *n)
902{
903 //printf("FTVHelp::generateLink(ref=%s,file=%s,anchor=%s\n",
904 // n->ref.data(),n->file.data(),n->anchor.data());
905 if (n->file.isEmpty()) // no link
906 {
907 t << "<b>" << convertToHtml(n->name) << "</b>";
908 }
909 else // link into other frame
910 {
911 if (!n->ref.isEmpty()) // link to entity imported via tag file
912 {
913 t << "<a class=\"elRef\" ";
914 t << externalLinkTarget() << externalRef("",n->ref,FALSE);
915 }
916 else // local link
917 {
918 t << "<a class=\"el\" ";
919 }
920 t << "href=\"";
921 t << externalRef("",n->ref,TRUE);
922 t << n->file << Doxygen::htmlFileExtension;
923 if (!n->anchor.isEmpty()) t << "#" << n->anchor;
924 if (m_topLevelIndex)
925 t << "\" target=\"basefrm\">";
926 else
927 t << "\" target=\"_self\">";
928 t << convertToHtml(n->name);
929 t << "</a>";
930 if (!n->ref.isEmpty())
931 {
932 t << "&#160;[external]";
933 }
934 }
935}
936
937void FTVHelp::generateJSLink(FTextStream &t,FTVNode *n)
938{
939 if (n->file.isEmpty()) // no link
940 {
941 t << "\"" << convertToJSString(n->name) << "\", null, ";
942 }
943 else // link into other page
944 {
945 // TODO: external links with installdox
946 // TODO: use m_topLevelIndex
947 t << "\"" << convertToJSString(n->name) << "\", \"";
948 t << externalRef("",n->ref,TRUE);
949 t << n->file << Doxygen::htmlFileExtension;
950 if (!n->anchor.isEmpty()) t << "#" << n->anchor;
951 t << "\", ";
952 }
953}
954
955void FTVHelp::generateTree(FTextStream &t, const QList<FTVNode> &nl,int level)
956{
957 QCString spaces;
958 spaces.fill(' ',level*2+8);
959 QListIterator<FTVNode> nli(nl);
960 FTVNode *n;
961 for (nli.toFirst();(n=nli.current());++nli)
962 {
963 t << spaces << "<p>";
964 generateIndent(t,n,0);
965 if (n->isDir)
966 {
967 t << "<img " << FTV_IMGATTRIBS(folderclosed) << "onclick=\"toggleFolder('folder" << folderId << "', this)\"/>";
968 generateLink(t,n);
969 t << "</p>\n";
970 t << spaces << "<div id=\"folder" << folderId << "\">\n";
971 folderId++;
972 generateTree(t,n->children,level+1);
973 t << spaces << "</div>\n";
974 }
975 else
976 {
977 t << "<img " << FTV_IMGATTRIBS(doc) << "/>";
978 generateLink(t,n);
979 t << "</p>\n";
980 }
981 }
982}
983
984bool FTVHelp::generateJSTree(FTextStream &t, const QList<FTVNode> &nl,int level,bool &first)
985{
986 QCString indentStr;
987 indentStr.fill(' ',level*2);
988 bool found=FALSE;
989 QListIterator<FTVNode> nli(nl);
990 FTVNode *n;
991 for (nli.toFirst();(n=nli.current());++nli)
992 {
993 // terminate previous entry
994 if (!first) t << "," << endl;
995 first=FALSE;
996
997 // start entry
998 if (!found)
999 {
1000 t << "[" << endl;
1001 }
1002 found=TRUE;
1003
1004 bool firstChild=TRUE;
1005 t << indentStr << " [ ";
1006 generateJSLink(t,n);
1007 bool emptySection = !generateJSTree(t,n->children,level+1,firstChild);
1008 if (emptySection)
1009 t << "null ]";
1010 else
1011 t << endl << indentStr << " ] ]";
1012 }
1013 return found;
1014}
1015
1016
1017#if 0
1018void FTVHelp::generateTreeViewImages()
1019{
1020 static bool done=FALSE;
1021 if (done) return;
1022 done=TRUE;
1023
1024 // Generate tree view images
1025 FTVImageInfo *p = image_info;
1026 while (p->name)
1027 {
1028 QCString fileName=Config_getString("HTML_OUTPUT")+"/"+p->name;
1029 QFile f(fileName);
1030 if (f.open(IO_WriteOnly))
1031 {
1032 f.writeBlock((char *)p->data,p->len);
1033 }
1034 else
1035 {
1036 fprintf(stderr,"warning: Cannot open file %s for writing\n",fileName.data());
1037 }
1038 f.close();
1039 p++;
1040 }
1041}
1042#endif
1043
1044// new style images
1045void FTVHelp::generateTreeViewImages()
1046{
1047 QCString dname=Config_getString("HTML_OUTPUT");
1048 writeColoredImgData(dname,ftv_image_data);
1049}
1050
1051// new style scripts
1052void FTVHelp::generateTreeViewScripts()
1053{
1054 // generate navtree.js
1055 {
1056 QFile f(Config_getString("HTML_OUTPUT")+"/navtree.js");
1057 if (f.open(IO_WriteOnly))
1058 {
1059 FTextStream t(&f);
1060 t << "var NAVTREE =" << endl;
1061 t << "[" << endl;
1062 t << " [ ";
1063 QCString &projName = Config_getString("PROJECT_NAME");
1064 if (projName.isEmpty())
1065 {
1066 LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::MainPage);
1067 t << "\"" << convertToJSString(lne->title()) << "\", ";
1068 }
1069 else
1070 {
1071 t << "\"" << convertToJSString(projName) << "\", ";
1072 }
1073 t << "\"index" << Doxygen::htmlFileExtension << "\", ";
1074
1075 bool first=TRUE;
1076 generateJSTree(t,m_indentNodes[0],1,first);
1077 if (first) t << "]";
1078
1079 t << endl << " ] ]" << endl;
1080 t << "];" << endl;
1081 t << endl << navtree_script;
1082 }
1083 }
1084 // generate resize.js
1085 {
1086 QFile f(Config_getString("HTML_OUTPUT")+"/resize.js");
1087 if (f.open(IO_WriteOnly))
1088 {
1089 FTextStream t(&f);
1090 t << resize_script;
1091 }
1092 }
1093#if 0
1094 // generate jquery.js
1095 {
1096 QFile f(Config_getString("HTML_OUTPUT")+"/jquery.js");
1097 if (f.open(IO_WriteOnly))
1098 {
1099 FTextStream t(&f);
1100 t << jquery_script1 << jquery_script2 << jquery_script3;
1101 }
1102 }
1103#endif
1104 // generate navtree.css
1105 {
1106 QFile f(Config_getString("HTML_OUTPUT")+"/navtree.css");
1107 if (f.open(IO_WriteOnly))
1108 {
1109 FTextStream t(&f);
1110 t << replaceColorMarkers(navtree_css);
1111 }
1112 }
1113}
1114
1115// old style script (used for inline trees)
1116void FTVHelp::generateScript(FTextStream &t)
1117{
1118 t << " <script type=\"text/javascript\">\n";
1119 t << " <!-- // Hide script from old browsers\n";
1120 t << " \n";
1121
1122 /* User has clicked on a node (folder or +/-) in the tree */
1123 t << " function toggleFolder(id, imageNode) \n";
1124 t << " {\n";
1125 t << " var folder = document.getElementById(id);\n";
1126 t << " var l = imageNode.src.length;\n";
1127 /* If the user clicks on the book icon, we move left one image so
1128 * the code (below) will also adjust the '+' icon.
1129 */
1130 t << " if (imageNode.src.substring(l-20,l)==\"" FTV_ICON_FILE(folderclosed) "\" || \n";
1131 t << " imageNode.src.substring(l-18,l)==\"" FTV_ICON_FILE(folderopen) "\")\n";
1132 t << " {\n";
1133 t << " imageNode = imageNode.previousSibling;\n";
1134 t << " l = imageNode.src.length;\n";
1135 t << " }\n";
1136 t << " if (folder == null) \n";
1137 t << " {\n";
1138 t << " } \n";
1139 /* Node controls a open section, we need to close it */
1140 t << " else if (folder.style.display == \"block\") \n";
1141 t << " {\n";
1142 t << " if (imageNode != null) \n";
1143 t << " {\n";
1144 t << " imageNode.nextSibling.src = \"" FTV_ICON_FILE(folderclosed) "\";\n";
1145 t << " if (imageNode.src.substring(l-13,l) == \"" FTV_ICON_FILE(mnode) "\")\n";
1146 t << " {\n";
1147 t << " imageNode.src = \"" FTV_ICON_FILE(pnode) "\";\n";
1148 t << " }\n";
1149 t << " else if (imageNode.src.substring(l-17,l) == \"" FTV_ICON_FILE(mlastnode) "\")\n";
1150 t << " {\n";
1151 t << " imageNode.src = \"" FTV_ICON_FILE(plastnode) "\";\n";
1152 t << " }\n";
1153 t << " }\n";
1154 t << " folder.style.display = \"none\";\n";
1155 t << " } \n";
1156 t << " else \n"; /* section is closed, we need to open it */
1157 t << " {\n";
1158 t << " if (imageNode != null) \n";
1159 t << " {\n";
1160 t << " imageNode.nextSibling.src = \"" FTV_ICON_FILE(folderopen) "\";\n";
1161 t << " if (imageNode.src.substring(l-13,l) == \"" FTV_ICON_FILE(pnode) "\")\n";
1162 t << " {\n";
1163 t << " imageNode.src = \"" FTV_ICON_FILE(mnode) "\";\n";
1164 t << " }\n";
1165 t << " else if (imageNode.src.substring(l-17,l) == \"" FTV_ICON_FILE(plastnode) "\")\n";
1166 t << " {\n";
1167 t << " imageNode.src = \"" FTV_ICON_FILE(mlastnode) "\";\n";
1168 t << " }\n";
1169 t << " }\n";
1170 t << " folder.style.display = \"block\";\n";
1171 t << " }\n";
1172 t << " }\n";
1173 t << "\n";
1174 t << " // End script hiding --> \n";
1175 t << " </script>\n";
1176}
1177
1178// write tree inside page
1179void FTVHelp::generateTreeViewInline(FTextStream &t)
1180{
1181 generateScript(t);
1182 t << " <div class=\"directory-alt\">\n";
1183 t << " <br/>\n";
1184 t << " <div style=\"display: block;\">\n";
1185
1186 generateTree(t,m_indentNodes[0],0);
1187
1188 t << " </div>\n";
1189 t << " </div>\n";
1190}
1191
1192// write old style index.html and tree.html
1193void FTVHelp::generateTreeView()
1194{
1195 generateTreeViewImages();
1196 generateTreeViewScripts();
1197#if 0
1198 QCString fileName;
1199 QFile f;
1200 static bool searchEngine = Config_getBool("SEARCHENGINE");
1201 static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH");
1202
1203 fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension;
1204 f.setName(fileName);
1205 if (!f.open(IO_WriteOnly))
1206 {
1207 err("Cannot open file %s for writing!\n",fileName.data());
1208 return;
1209 }
1210 else
1211 {
1212 FTextStream t(&f);
1213 //t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\">\n";
1214 t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n";
1215 t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n";
1216 t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n";
1217 t << "<title>";
1218 if (Config_getString("PROJECT_NAME").isEmpty())
1219 {
1220 t << "Doxygen Documentation";
1221 }
1222 else
1223 {
1224 t << Config_getString("PROJECT_NAME");
1225 }
1226 t << "</title>\n</head>" << endl;
1227 t << "<frameset cols=\"" << Config_getInt("TREEVIEW_WIDTH") << ",*\">" << endl;
1228 t << " <frame src=\"tree" << Doxygen::htmlFileExtension << "\" name=\"treefrm\"/>" << endl;
1229 t << " <frame src=\"main" << Doxygen::htmlFileExtension << "\" name=\"basefrm\"/>" << endl;
1230 t << " <noframes>" << endl;
1231 t << " <body>" << endl;
1232 t << " <a href=\"main" << Doxygen::htmlFileExtension << "\">Frames are disabled. Click here to go to the main page.</a>" << endl;
1233 t << " </body>" << endl;
1234 t << " </noframes>" << endl;
1235 t << "</frameset>" << endl;
1236 t << "</html>" << endl;
1237 f.close();
1238 }
1239
1240 // Generate tree view
1241 fileName=Config_getString("HTML_OUTPUT")+"/tree"+Doxygen::htmlFileExtension;
1242 f.setName(fileName);
1243 if (!f.open(IO_WriteOnly))
1244 {
1245 err("Cannot open file %s for writing!\n",fileName.data());
1246 return;
1247 }
1248 else
1249 {
1250 FTextStream t(&f);
1251
1252 //if (searchEngine)
1253 //{
1254 // t << "<!-- This comment will put IE 6, 7 and 8 in quirks mode -->" << endl;
1255 //}
1256 t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
1257 t << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
1258 t << " <head>\n";
1259 t << " <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n";
1260 t << " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n";
1261 t << " <meta http-equiv=\"Content-Language\" content=\"en\" />\n";
1262 if (searchEngine)
1263 {
1264 t << " <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>" << endl;
1265 t << " <script type=\"text/javaScript\" src=\"search/search.js\"></script>" << endl;
1266 }
1267 t << " <link rel=\"stylesheet\" href=\"";
1268 QCString cssname=Config_getString("HTML_STYLESHEET");
1269 if (cssname.isEmpty())
1270 {
1271 t << "doxygen.css";
1272 }
1273 else
1274 {
1275 QFileInfo cssfi(cssname);
1276 if (!cssfi.exists())
1277 {
1278 err("Error: user specified HTML style sheet file does not exist!\n");
1279 }
1280 t << cssfi.fileName();
1281 }
1282 t << "\"/>" << endl;
1283 t << " <title>TreeView</title>\n";
1284 generateScript(t);
1285 t << " </head>\n";
1286 t << "\n";
1287 t << " <body class=\"ftvtree\"";
1288 if (searchEngine && !serverBasedSearch)
1289 {
1290 t << " onload='searchBox.OnSelectItem(0);'";
1291 }
1292 t << ">\n";
1293 if (searchEngine)
1294 {
1295 t << " <script type=\"text/javascript\"><!--\n";
1296 t << " var searchBox = new SearchBox(\"searchBox\", \"search\", true, '"
1297 << theTranslator->trSearch() << "');\n";
1298 t << " --></script>\n";
1299 if (!serverBasedSearch)
1300 {
1301 t << " <div class=\"tabsearch\">\n";
1302 t << " <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n";
1303 t << " <span class=\"left\">\n";
1304 t << " <a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\">"
1305 << "<img id=\"MSearchCloseImg\" border=\"0\" src=\"search/close.png\" alt=\"\"/></a>\n";
1306 t << " <input type=\"text\" id=\"MSearchField\" value=\""
1307 << theTranslator->trSearch() << "\" accesskey=\"S\"\n";
1308 t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
1309 t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n";
1310 t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n";
1311 t << " </span><span class=\"right\">\n";
1312 t << " <img id=\"MSearchSelect\" src=\"search/mag_sel.png\"\n";
1313 t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
1314 t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
1315 t << " alt=\"\"/>\n";
1316 t << " </span>\n";
1317 t << " </div>\n";
1318 t << " </div>\n";
1319 HtmlGenerator::writeSearchFooter(t,QCString());
1320 }
1321 else
1322 {
1323 t << " <div class=\"tabsearch\">\n";
1324 t << " <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n";
1325 t << " <span class=\"left\">\n";
1326 t << " <form id=\"FSearchBox\" action=\"search.php\" method=\"get\" target=\"basefrm\">\n";
1327 t << " <img id=\"MSearchSelect\" src=\"search/mag.png\" alt=\"\"/>\n";
1328 t << " <input type=\"text\" id=\"MSearchField\" name=\"query\" value=\""
1329 << theTranslator->trSearch() << "\" size=\"20\" accesskey=\"S\" \n";
1330 t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
1331 t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n";
1332 t << " </form>\n";
1333 t << " </span><span class=\"right\"></span>\n";
1334 t << " </div>\n";
1335 t << " </div>\n";
1336 }
1337 }
1338 t << " <div class=\"directory\">\n";
1339 t << " <h3 class=\"swap\"><span>";
1340 QCString &projName = Config_getString("PROJECT_NAME");
1341 if (projName.isEmpty())
1342 {
1343 t << "Root";
1344 }
1345 else
1346 {
1347 t << projName;
1348 }
1349 t << "</span></h3>\n";
1350 t << " <div style=\"display: block;\">\n";
1351
1352 generateTree(t,m_indentNodes[0],0);
1353
1354 t << " </div>\n";
1355 t << " </div>\n";
1356
1357 t << " </body>\n";
1358 t << "</html>\n";
1359
1360 f.close();
1361 }
1362#endif
1363}
1364
1365

Archive Download this file

Revision: 1322