Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qgssymbologyutils.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgssymbologyutils.cpp - description
3  -------------------
4  begin : Oct 2003
5  copyright : (C) 2003 by Marco Hugentobler
6  email : mhugent@geo.unizh.ch
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 /* $Id$ */
18 #include "qgssymbologyutils.h"
19 #include "qgslogger.h"
20 #include <QPixmap>
21 
22 static const char *solidLineData[] =
23 {
24  "60 26 4 1",
25  "a c None",
26  "# c None",
27  ". c None",
28  "b c #0000c5",
29  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
30  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
31  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
32  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
33  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
34  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
35  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
36  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
37  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
38  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
39  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
40  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
41  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
42  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
43  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
44  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
45  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
46  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
47  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
48  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
49  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
50  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
51  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
52  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
53  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
54  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
55 };
56 
57 static const char *dashLineData[] =
58 {
59  "60 26 4 1",
60  "a c None",
61  "# c None",
62  ". c None",
63  "b c #0000c5",
64  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
65  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
66  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
67  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
68  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
69  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
70  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
71  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
72  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
73  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
74  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
75  "bbbbbbbbbbbba.a.abbbbbbbbbbbb.a.a.bbbbbbbbbbbba.a.abbbbbbbbb",
76  "bbbbbbbbbbbb.#.#.bbbbbbbbbbbb#.#.#bbbbbbbbbbbb.#.#.bbbbbbbbb",
77  "bbbbbbbbbbbba.a.abbbbbbbbbbbb.a.a.bbbbbbbbbbbba.a.abbbbbbbbb",
78  "bbbbbbbbbbbb.#.#.bbbbbbbbbbbb#.#.#bbbbbbbbbbbb.#.#.bbbbbbbbb",
79  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
80  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
81  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
82  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
83  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
84  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
85  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
86  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
87  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
88  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
89  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
90 };
91 
92 static const char *dotLineData[] =
93 {
94  "60 26 4 1",
95  "a c None",
96  "# c None",
97  ". c None",
98  "b c #0000c5",
99  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
100  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
101  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
102  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
103  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
104  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
105  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
106  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
107  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
108  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
109  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
110  "bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbb",
111  "bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb",
112  "bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbb",
113  "bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb",
114  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
115  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
116  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
117  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
118  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
119  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
120  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
121  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
122  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
123  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
124  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
125 };
126 
127 static const char *dashDotLineData[] =
128 {
129  "60 26 4 1",
130  "a c None",
131  "# c None",
132  ". c None",
133  "b c #0000c5",
134  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
135  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
136  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
137  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
138  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
139  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
140  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
141  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
142  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
143  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
144  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
145  "bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbb",
146  "bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb",
147  "bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbb",
148  "bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb",
149  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
150  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
151  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
152  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
153  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
154  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
155  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
156  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
157  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
158  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
159  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
160 };
161 
162 static const char *dashDotDotLineData[] =
163 {
164  "60 26 5 1",
165  "a c None",
166  "# c None",
167  ". c None",
168  "c c #0000c5",
169  "b c None",
170  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
171  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
172  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
173  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
174  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
175  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
176  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
177  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
178  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
179  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
180  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
181  "cccccccccccca.a.cccca.a.cccca.a.cccccccccccca.a.cccca.a.cccc",
182  "cccccccccccc.#.#cccc.#.#cccc.#.#cccccccccccc.#.#cccc.#.#cccc",
183  "cccccccccccca.a.cccca.a.cccca.a.cccccccccccca.a.cccca.a.cccc",
184  "cccccccccccc.#.#cccc.#.#cccc.#.#cccccccccccc.#.#cccc.#.#cccc",
185  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
186  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
187  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
188  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
189  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
190  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
191  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
192  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
193  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
194  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
195  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
196 };
197 
198 static const char *noPenLineData[] =
199 {
200  "60 26 3 1",
201  "a c None",
202  "# c None",
203  ". c None",
204  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
205  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
206  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
207  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
208  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
209  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
210  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
211  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
212  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
213  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
214  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
215  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
216  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
217  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
218  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
219  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
220  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
221  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
222  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
223  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
224  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
225  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
226  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
227  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
228  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
229  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
230 };
231 
232 static const char *solidData[] =
233 {
234  "50 20 1 1",
235  ". c #3155c5",
236  "..................................................",
237  "..................................................",
238  "..................................................",
239  "..................................................",
240  "..................................................",
241  "..................................................",
242  "..................................................",
243  "..................................................",
244  "..................................................",
245  "..................................................",
246  "..................................................",
247  "..................................................",
248  "..................................................",
249  "..................................................",
250  "..................................................",
251  "..................................................",
252  "..................................................",
253  "..................................................",
254  "..................................................",
255  ".................................................."
256 };
257 
258 static const char *fdiagData[] =
259 {
260  "50 20 2 1",
261  "# c #3155c5",
262  ". c #ffffff",
263  ".......#.......#.......#.......#.......#.......#..",
264  "#.......#.......#.......#.......#.......#.......#.",
265  ".#.......#.......#.......#.......#.......#.......#",
266  "..#.......#.......#.......#.......#.......#.......",
267  "...#.......#.......#.......#.......#.......#......",
268  "....#.......#.......#.......#.......#.......#.....",
269  ".....#.......#.......#.......#.......#.......#....",
270  "......#.......#.......#.......#.......#.......#...",
271  ".......#.......#.......#.......#.......#.......#..",
272  "#.......#.......#.......#.......#.......#.......#.",
273  ".#.......#.......#.......#.......#.......#.......#",
274  "..#.......#.......#.......#.......#.......#.......",
275  "...#.......#.......#.......#.......#.......#......",
276  "....#.......#.......#.......#.......#.......#.....",
277  ".....#.......#.......#.......#.......#.......#....",
278  "......#.......#.......#.......#.......#.......#...",
279  ".......#.......#.......#.......#.......#.......#..",
280  "#.......#.......#.......#.......#.......#.......#.",
281  ".#.......#.......#.......#.......#.......#.......#",
282  "..#.......#.......#.......#.......#.......#......."
283 };
284 
285 static const char *dense4Data[] =
286 {
287  "50 20 2 1",
288  "# c #3155c5",
289  ". c #ffffff",
290  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
291  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
292  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
293  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
294  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
295  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
296  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
297  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
298  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
299  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
300  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
301  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
302  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
303  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
304  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
305  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
306  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
307  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
308  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
309  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#."
310 };
311 
312 static const char *horizontalData[] =
313 {
314  "50 20 2 1",
315  "# c #3155c5",
316  ". c #ffffff",
317  "..................................................",
318  "..................................................",
319  "##################################################",
320  "..................................................",
321  "..................................................",
322  "..................................................",
323  "..................................................",
324  "..................................................",
325  "##################################################",
326  "..................................................",
327  "..................................................",
328  "..................................................",
329  "..................................................",
330  "..................................................",
331  "##################################################",
332  "..................................................",
333  "..................................................",
334  "..................................................",
335  "..................................................",
336  ".................................................."
337 };
338 
339 static const char *dense5Data[] =
340 {
341  "50 20 2 1",
342  ". c #3155c5",
343  "# c #ffffff",
344  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
345  "###.###.###.###.###.###.###.###.###.###.###.###.##",
346  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
347  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
348  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
349  "###.###.###.###.###.###.###.###.###.###.###.###.##",
350  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
351  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
352  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
353  "###.###.###.###.###.###.###.###.###.###.###.###.##",
354  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
355  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
356  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
357  "###.###.###.###.###.###.###.###.###.###.###.###.##",
358  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
359  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
360  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
361  "###.###.###.###.###.###.###.###.###.###.###.###.##",
362  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
363  "#.###.###.###.###.###.###.###.###.###.###.###.###."
364 };
365 
366 static const char *diagCrossData[] =
367 {
368  "50 20 2 1",
369  "# c #3155c5",
370  ". c #ffffff",
371  "..#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
372  "...#.......#.......#.......#.......#.......#......",
373  "..#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
374  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
375  "#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
376  ".......#.......#.......#.......#.......#.......#..",
377  "#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
378  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
379  "..#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
380  "...#.......#.......#.......#.......#.......#......",
381  "..#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
382  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
383  "#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
384  ".......#.......#.......#.......#.......#.......#..",
385  "#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
386  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
387  "..#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
388  "...#.......#.......#.......#.......#.......#......",
389  "..#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
390  ".#...#...#...#...#...#...#...#...#...#...#...#...#"
391 };
392 
393 static const char *dense1Data[] =
394 {
395  "50 20 2 1",
396  ". c #3155c5",
397  "# c #ffffff",
398  "..................................................",
399  "..#...#...#...#...#...#...#...#...#...#...#...#...",
400  "..................................................",
401  "..................................................",
402  "..................................................",
403  "..#...#...#...#...#...#...#...#...#...#...#...#...",
404  "..................................................",
405  "..................................................",
406  "..................................................",
407  "..#...#...#...#...#...#...#...#...#...#...#...#...",
408  "..................................................",
409  "..................................................",
410  "..................................................",
411  "..#...#...#...#...#...#...#...#...#...#...#...#...",
412  "..................................................",
413  "..................................................",
414  "..................................................",
415  "..#...#...#...#...#...#...#...#...#...#...#...#...",
416  "..................................................",
417  ".................................................."
418 };
419 
420 static const char *dense6Data[] =
421 {
422  "50 20 2 1",
423  "# c #3155c5",
424  ". c #ffffff",
425  "..................................................",
426  "#...#...#...#...#...#...#...#...#...#...#...#...#.",
427  "..................................................",
428  "..#...#...#...#...#...#...#...#...#...#...#...#...",
429  "..................................................",
430  "#...#...#...#...#...#...#...#...#...#...#...#...#.",
431  "..................................................",
432  "..#...#...#...#...#...#...#...#...#...#...#...#...",
433  "..................................................",
434  "#...#...#...#...#...#...#...#...#...#...#...#...#.",
435  "..................................................",
436  "..#...#...#...#...#...#...#...#...#...#...#...#...",
437  "..................................................",
438  "#...#...#...#...#...#...#...#...#...#...#...#...#.",
439  "..................................................",
440  "..#...#...#...#...#...#...#...#...#...#...#...#...",
441  "..................................................",
442  "#...#...#...#...#...#...#...#...#...#...#...#...#.",
443  "..................................................",
444  "..#...#...#...#...#...#...#...#...#...#...#...#..."
445 };
446 
447 static const char *verticalData[] =
448 {
449  "50 20 2 1",
450  "# c #3155c5",
451  ". c #ffffff",
452  ".....#.....#.....#.....#.....#.....#.....#.....#..",
453  ".....#.....#.....#.....#.....#.....#.....#.....#..",
454  ".....#.....#.....#.....#.....#.....#.....#.....#..",
455  ".....#.....#.....#.....#.....#.....#.....#.....#..",
456  ".....#.....#.....#.....#.....#.....#.....#.....#..",
457  ".....#.....#.....#.....#.....#.....#.....#.....#..",
458  ".....#.....#.....#.....#.....#.....#.....#.....#..",
459  ".....#.....#.....#.....#.....#.....#.....#.....#..",
460  ".....#.....#.....#.....#.....#.....#.....#.....#..",
461  ".....#.....#.....#.....#.....#.....#.....#.....#..",
462  ".....#.....#.....#.....#.....#.....#.....#.....#..",
463  ".....#.....#.....#.....#.....#.....#.....#.....#..",
464  ".....#.....#.....#.....#.....#.....#.....#.....#..",
465  ".....#.....#.....#.....#.....#.....#.....#.....#..",
466  ".....#.....#.....#.....#.....#.....#.....#.....#..",
467  ".....#.....#.....#.....#.....#.....#.....#.....#..",
468  ".....#.....#.....#.....#.....#.....#.....#.....#..",
469  ".....#.....#.....#.....#.....#.....#.....#.....#..",
470  ".....#.....#.....#.....#.....#.....#.....#.....#..",
471  ".....#.....#.....#.....#.....#.....#.....#.....#.."
472 };
473 
474 static const char *dense7Data[] =
475 {
476  "50 20 2 1",
477  ". c #3155c5",
478  "# c #ffffff",
479  "##################################################",
480  "##################################################",
481  ".###.###.###.###.###.###.###.###.###.###.###.###.#",
482  "##################################################",
483  "##################################################",
484  "##################################################",
485  ".###.###.###.###.###.###.###.###.###.###.###.###.#",
486  "##################################################",
487  "##################################################",
488  "##################################################",
489  ".###.###.###.###.###.###.###.###.###.###.###.###.#",
490  "##################################################",
491  "##################################################",
492  "##################################################",
493  ".###.###.###.###.###.###.###.###.###.###.###.###.#",
494  "##################################################",
495  "##################################################",
496  "##################################################",
497  ".###.###.###.###.###.###.###.###.###.###.###.###.#",
498  "##################################################"
499 };
500 
501 static const char *crossData[] =
502 {
503  "50 20 2 1",
504  "# c #3155c5",
505  ". c #ffffff",
506  ".....#.....#.....#.....#.....#.....#.....#.....#..",
507  ".....#.....#.....#.....#.....#.....#.....#.....#..",
508  ".....#.....#.....#.....#.....#.....#.....#.....#..",
509  "##################################################",
510  ".....#.....#.....#.....#.....#.....#.....#.....#..",
511  ".....#.....#.....#.....#.....#.....#.....#.....#..",
512  ".....#.....#.....#.....#.....#.....#.....#.....#..",
513  ".....#.....#.....#.....#.....#.....#.....#.....#..",
514  ".....#.....#.....#.....#.....#.....#.....#.....#..",
515  "##################################################",
516  ".....#.....#.....#.....#.....#.....#.....#.....#..",
517  ".....#.....#.....#.....#.....#.....#.....#.....#..",
518  ".....#.....#.....#.....#.....#.....#.....#.....#..",
519  ".....#.....#.....#.....#.....#.....#.....#.....#..",
520  ".....#.....#.....#.....#.....#.....#.....#.....#..",
521  "##################################################",
522  ".....#.....#.....#.....#.....#.....#.....#.....#..",
523  ".....#.....#.....#.....#.....#.....#.....#.....#..",
524  ".....#.....#.....#.....#.....#.....#.....#.....#..",
525  ".....#.....#.....#.....#.....#.....#.....#.....#.."
526 };
527 
528 static const char *dense2Data[] =
529 {
530  "50 20 2 1",
531  ". c #3155c5",
532  "# c #ffffff",
533  "..................................................",
534  "...#...#...#...#...#...#...#...#...#...#...#...#..",
535  "..................................................",
536  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
537  "..................................................",
538  "...#...#...#...#...#...#...#...#...#...#...#...#..",
539  "..................................................",
540  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
541  "..................................................",
542  "...#...#...#...#...#...#...#...#...#...#...#...#..",
543  "..................................................",
544  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
545  "..................................................",
546  "...#...#...#...#...#...#...#...#...#...#...#...#..",
547  "..................................................",
548  ".#...#...#...#...#...#...#...#...#...#...#...#...#",
549  "..................................................",
550  "...#...#...#...#...#...#...#...#...#...#...#...#..",
551  "..................................................",
552  ".#...#...#...#...#...#...#...#...#...#...#...#...#"
553 };
554 
555 static const char *bdiagData[] =
556 {
557  "50 20 2 1",
558  "# c #3155c5",
559  ". c #ffffff",
560  ".#.......#.......#.......#.......#.......#.......#",
561  "#.......#.......#.......#.......#.......#.......#.",
562  ".......#.......#.......#.......#.......#.......#..",
563  "......#.......#.......#.......#.......#.......#...",
564  ".....#.......#.......#.......#.......#.......#....",
565  "....#.......#.......#.......#.......#.......#.....",
566  "...#.......#.......#.......#.......#.......#......",
567  "..#.......#.......#.......#.......#.......#.......",
568  ".#.......#.......#.......#.......#.......#.......#",
569  "#.......#.......#.......#.......#.......#.......#.",
570  ".......#.......#.......#.......#.......#.......#..",
571  "......#.......#.......#.......#.......#.......#...",
572  ".....#.......#.......#.......#.......#.......#....",
573  "....#.......#.......#.......#.......#.......#.....",
574  "...#.......#.......#.......#.......#.......#......",
575  "..#.......#.......#.......#.......#.......#.......",
576  ".#.......#.......#.......#.......#.......#.......#",
577  "#.......#.......#.......#.......#.......#.......#.",
578  ".......#.......#.......#.......#.......#.......#..",
579  "......#.......#.......#.......#.......#.......#..."
580 };
581 
582 static const char *dense3Data[] =
583 {
584  "50 20 2 1",
585  "# c #3155c5",
586  ". c #ffffff",
587  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
588  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
589  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
590  "###.###.###.###.###.###.###.###.###.###.###.###.##",
591  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
592  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
593  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
594  "###.###.###.###.###.###.###.###.###.###.###.###.##",
595  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
596  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
597  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
598  "###.###.###.###.###.###.###.###.###.###.###.###.##",
599  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
600  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
601  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
602  "###.###.###.###.###.###.###.###.###.###.###.###.##",
603  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
604  "#.###.###.###.###.###.###.###.###.###.###.###.###.",
605  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
606  "###.###.###.###.###.###.###.###.###.###.###.###.##"
607 };
608 
609 static const char *nobrush[] =
610 {
611  "50 20 2 1",
612  "# c None",
613  ". c #3155c5",
614  ".................................................."
615  ".################################################.",
616  ".################################################.",
617  ".################################################.",
618  ".################################################.",
619  ".################################################.",
620  ".################################################.",
621  ".################################################.",
622  ".################################################.",
623  ".################################################.",
624  ".################################################.",
625  ".################################################.",
626  ".################################################.",
627  ".################################################.",
628  ".################################################.",
629  ".################################################.",
630  ".################################################.",
631  ".################################################.",
632  ".################################################.",
633  ".################################################.",
634  ".................................................."
635 };
636 
637 static const char *texturePatternData[] =
638 {
639  "50 20 2 1",
640  "# c #3155c5",
641  ". c #ffffff",
642  "..................................................",
643  "..................#########.......................",
644  "...............##############.....................",
645  "..............####........#####...................",
646  "...........................####...................",
647  "...........................####...................",
648  "...........................####...................",
649  "...........................####...................",
650  "..........................####....................",
651  "..........................####....................",
652  "........................####......................",
653  "......................####........................",
654  "....................####..........................",
655  "...................####...........................",
656  "...................####...........................",
657  "..................................................",
658  "...................####...........................",
659  "...................####...........................",
660  "...................####...........................",
661  ".................................................."
662 };
663 
664 QString QgsSymbologyUtils::penStyle2QString( Qt::PenStyle penstyle )
665 {
666  if ( penstyle == Qt::NoPen )
667  {
668  return "NoPen";
669  }
670  else if ( penstyle == Qt::SolidLine )
671  {
672  return "SolidLine";
673  }
674  else if ( penstyle == Qt::DashLine )
675  {
676  return "DashLine";
677  }
678  else if ( penstyle == Qt::DotLine )
679  {
680  return "DotLine";
681  }
682  else if ( penstyle == Qt::DashDotLine )
683  {
684  return "DashDotLine";
685  }
686  else if ( penstyle == Qt::DashDotDotLine )
687  {
688  return "DashDotDotLine";
689  }
690  else if ( penstyle == Qt::MPenStyle )
691  {
692  return "MPenStyle";
693  }
694  else //return a null string
695  {
696  return QString();
697  }
698 }
699 
700 Qt::PenStyle QgsSymbologyUtils::qString2PenStyle( QString penString )
701 {
702  if ( penString == "NoPen" )
703  {
704  return Qt::NoPen;
705  }
706  else if ( penString == "SolidLine" )
707  {
708  return Qt::SolidLine;
709  }
710  else if ( penString == "DashLine" )
711  {
712  return Qt::DashLine;
713  }
714  else if ( penString == "DotLine" )
715  {
716  return Qt::DotLine;
717  }
718  else if ( penString == "DashDotLine" )
719  {
720  return Qt::DashDotLine;
721  }
722  else if ( penString == "DashDotDotLine" )
723  {
724  return Qt::DashDotDotLine;
725  }
726  else if ( penString == "MPenStyle" )
727  {
728  return Qt::MPenStyle;
729  }
730  else
731  {
732  return Qt::NoPen;
733  }
734 }
735 
736 QString QgsSymbologyUtils::brushStyle2QString( Qt::BrushStyle brushstyle )
737 {
738  if ( brushstyle == Qt::NoBrush )
739  {
740  return "NoBrush";
741  }
742  else if ( brushstyle == Qt::SolidPattern )
743  {
744  return "SolidPattern";
745  }
746  else if ( brushstyle == Qt::Dense1Pattern )
747  {
748  return "Dense1Pattern";
749  }
750  else if ( brushstyle == Qt::Dense2Pattern )
751  {
752  return "Dense2Pattern";
753  }
754  else if ( brushstyle == Qt::Dense3Pattern )
755  {
756  return "Dense3Pattern";
757  }
758  else if ( brushstyle == Qt::Dense4Pattern )
759  {
760  return "Dense4Pattern";
761  }
762  else if ( brushstyle == Qt::Dense5Pattern )
763  {
764  return "Dense5Pattern";
765  }
766  else if ( brushstyle == Qt::Dense6Pattern )
767  {
768  return "Dense6Pattern";
769  }
770  else if ( brushstyle == Qt::Dense7Pattern )
771  {
772  return "Dense7Pattern";
773  }
774  else if ( brushstyle == Qt::HorPattern )
775  {
776  return "HorPattern";
777  }
778  else if ( brushstyle == Qt::VerPattern )
779  {
780  return "VerPattern";
781  }
782  else if ( brushstyle == Qt::CrossPattern )
783  {
784  return "CrossPattern";
785  }
786  else if ( brushstyle == Qt::BDiagPattern )
787  {
788  return "BDiagPattern";
789  }
790  else if ( brushstyle == Qt::FDiagPattern )
791  {
792  return "FDiagPattern";
793  }
794  else if ( brushstyle == Qt::DiagCrossPattern )
795  {
796  return "DiagCrossPattern";
797  }
798  else if ( brushstyle == Qt::TexturePattern )
799  {
800  return "TexturePattern";
801  }
802  else //return a null string
803  {
804  QgsDebugMsg( "no matching pattern found" );
805  return " ";
806  }
807 }
808 
809 Qt::BrushStyle QgsSymbologyUtils::qString2BrushStyle( QString brushString )
810 {
811  if ( brushString == "NoBrush" )
812  {
813  return Qt::NoBrush;
814  }
815  else if ( brushString == "SolidPattern" )
816  {
817  return Qt::SolidPattern;
818  }
819  else if ( brushString == "Dense1Pattern" )
820  {
821  return Qt::Dense1Pattern;
822  }
823  else if ( brushString == "Dense2Pattern" )
824  {
825  return Qt::Dense2Pattern;
826  }
827  else if ( brushString == "Dense3Pattern" )
828  {
829  return Qt::Dense3Pattern;
830  }
831  else if ( brushString == "Dense4Pattern" )
832  {
833  return Qt::Dense4Pattern;
834  }
835  else if ( brushString == "Dense5Pattern" )
836  {
837  return Qt::Dense5Pattern;
838  }
839  else if ( brushString == "Dense6Pattern" )
840  {
841  return Qt::Dense6Pattern;
842  }
843  else if ( brushString == "Dense7Pattern" )
844  {
845  return Qt::Dense7Pattern;
846  }
847  else if ( brushString == "HorPattern" )
848  {
849  return Qt::HorPattern;
850  }
851  else if ( brushString == "VerPattern" )
852  {
853  return Qt::VerPattern;
854  }
855  else if ( brushString == "CrossPattern" )
856  {
857  return Qt::CrossPattern;
858  }
859  else if ( brushString == "BDiagPattern" )
860  {
861  return Qt::BDiagPattern;
862  }
863  else if ( brushString == "FDiagPattern" )
864  {
865  return Qt::FDiagPattern;
866  }
867  else if ( brushString == "DiagCrossPattern" )
868  {
869  return Qt::DiagCrossPattern;
870  }
871  else if ( brushString == "TexturePattern" )
872  {
873  return Qt::TexturePattern;
874  }
875  else //return a null string
876  {
877  QgsDebugMsg( QString( "Brush style \"%1\" not found" ).arg( brushString ) );
878  return Qt::NoBrush;
879  }
880 }
881 
882 QPixmap QgsSymbologyUtils::qString2LinePixmap( QString lineString )
883 {
884  if ( lineString == "SolidLine" )
885  {
886  return QPixmap( solidLineData );
887  }
888 
889  if ( lineString == "DashLine" )
890  {
891  return QPixmap( dashLineData );
892  }
893 
894  if ( lineString == "DotLine" )
895  {
896  return QPixmap( dotLineData );
897  }
898 
899  if ( lineString == "DashDotLine" )
900  {
901  return QPixmap( dashDotLineData );
902  }
903 
904  if ( lineString == "DashDotDotLine" )
905  {
906  return QPixmap( dashDotDotLineData );
907  }
908  if ( lineString == "NoPen" )
909  {
910  return QPixmap( noPenLineData );
911  }
912 
913  return QPixmap(); // XXX I hope returning a blank one is ok
914 }
915 
916 QPixmap QgsSymbologyUtils::qString2PatternPixmap( QString patternString )
917 {
918  if ( patternString == "SolidPattern" )
919  {
920  return QPixmap( solidData );
921  }
922  else if ( patternString == "Dense1Pattern" )
923  {
924  return QPixmap( dense1Data );
925  }
926  else if ( patternString == "Dense2Pattern" )
927  {
928  return QPixmap( dense2Data );
929  }
930  else if ( patternString == "Dense3Pattern" )
931  {
932  return QPixmap( dense3Data );
933  }
934  else if ( patternString == "Dense4Pattern" )
935  {
936  return QPixmap( dense4Data );
937  }
938  else if ( patternString == "Dense5Pattern" )
939  {
940  return QPixmap( dense5Data );
941  }
942  else if ( patternString == "Dense6Pattern" )
943  {
944  return QPixmap( dense6Data );
945  }
946  else if ( patternString == "Dense7Pattern" )
947  {
948  return QPixmap( dense7Data );
949  }
950  else if ( patternString == "HorPattern" )
951  {
952  return QPixmap( horizontalData );
953  }
954  else if ( patternString == "VerPattern" )
955  {
956  return QPixmap( verticalData );
957  }
958  else if ( patternString == "CrossPattern" )
959  {
960  return QPixmap( crossData );
961  }
962  else if ( patternString == "BDiagPattern" )
963  {
964  return QPixmap( bdiagData );
965  }
966  else if ( patternString == "FDiagPattern" )
967  {
968  return QPixmap( fdiagData );
969  }
970  else if ( patternString == "DiagCrossPattern" )
971  {
972  return QPixmap( diagCrossData );
973  }
974  else if ( patternString == "TexturePattern" )
975  {
976  return QPixmap( texturePatternData );
977  }
978  else if ( patternString == "NoBrush" )
979  {
980  return QPixmap( nobrush );
981  }
982  else //return a null patternString
983  {
984  QgsDebugMsg( "no matching pattern found" );
985  return QPixmap();
986  }
987 }
988 
989 const char * QgsSymbologyUtils::penStyle2Char( Qt::PenStyle penstyle )
990 {
991  if ( penstyle == Qt::NoPen )
992  {
993  return "NoPen";
994  }
995  else if ( penstyle == Qt::SolidLine )
996  {
997  return "SolidLine";
998  }
999  else if ( penstyle == Qt::DashLine )
1000  {
1001  return "DashLine";
1002  }
1003  else if ( penstyle == Qt::DotLine )
1004  {
1005  return "DotLine";
1006  }
1007  else if ( penstyle == Qt::DashDotLine )
1008  {
1009  return "DashDotLine";
1010  }
1011  else if ( penstyle == Qt::DashDotDotLine )
1012  {
1013  return "DashDotDotLine";
1014  }
1015  else if ( penstyle == Qt::MPenStyle )
1016  {
1017  return "MPenStyle";
1018  }
1019  else //return an empty char*
1020  {
1021  return " ";
1022  }
1023 }
1024 
1025 const char *QgsSymbologyUtils::brushStyle2Char( Qt::BrushStyle brushstyle )
1026 {
1027  if ( brushstyle == Qt::NoBrush )
1028  {
1029  return "NoBrush";
1030  }
1031  else if ( brushstyle == Qt::SolidPattern )
1032  {
1033  return "SolidPattern";
1034  }
1035  else if ( brushstyle == Qt::Dense1Pattern )
1036  {
1037  return "Dense1Pattern";
1038  }
1039  else if ( brushstyle == Qt::Dense2Pattern )
1040  {
1041  return "Dense2Pattern";
1042  }
1043  else if ( brushstyle == Qt::Dense3Pattern )
1044  {
1045  return "Dense3Pattern";
1046  }
1047  else if ( brushstyle == Qt::Dense4Pattern )
1048  {
1049  return "Dense4Pattern";
1050  }
1051  else if ( brushstyle == Qt::Dense5Pattern )
1052  {
1053  return "Dense5Pattern";
1054  }
1055  else if ( brushstyle == Qt::Dense6Pattern )
1056  {
1057  return "Dense6Pattern";
1058  }
1059  else if ( brushstyle == Qt::Dense7Pattern )
1060  {
1061  return "Dense7Pattern";
1062  }
1063  else if ( brushstyle == Qt::HorPattern )
1064  {
1065  return "HorPattern";
1066  }
1067  else if ( brushstyle == Qt::VerPattern )
1068  {
1069  return "VerPattern";
1070  }
1071  else if ( brushstyle == Qt::CrossPattern )
1072  {
1073  return "CrossPattern";
1074  }
1075  else if ( brushstyle == Qt::BDiagPattern )
1076  {
1077  return "BDiagPattern";
1078  }
1079  else if ( brushstyle == Qt::FDiagPattern )
1080  {
1081  return "FDiagPattern";
1082  }
1083  else if ( brushstyle == Qt::DiagCrossPattern )
1084  {
1085  return "DiagCrossPattern";
1086  }
1087  else if ( brushstyle == Qt::TexturePattern )
1088  {
1089  return "TexturePattern";
1090  }
1091  else //return an empty char*
1092  {
1093  return " ";
1094  }
1095 }
1096 
1097 QPixmap QgsSymbologyUtils::char2LinePixmap( const char *c )
1098 {
1099  if ( strcmp( c, "SolidLine" ) == 0 )
1100  {
1101  return QPixmap( solidLineData );
1102  }
1103 
1104  else if ( strcmp( c, "DashLine" ) == 0 )
1105  {
1106  return QPixmap( dashLineData );
1107  }
1108 
1109  else if ( strcmp( c, "DotLine" ) == 0 )
1110  {
1111  return QPixmap( dotLineData );
1112  }
1113 
1114  else if ( strcmp( c, "DashDotLine" ) == 0 )
1115  {
1116  return QPixmap( dashDotLineData );
1117  }
1118 
1119  else if ( strcmp( c, "DashDotDotLine" ) == 0 )
1120  {
1121  return QPixmap( dashDotDotLineData );
1122  }
1123 
1124  else if ( strcmp( c, "NoPen" ) == 0 )
1125  {
1126  return QPixmap( noPenLineData );
1127  }
1128 
1129  else
1130  {
1131  QgsDebugMsg( "no matching style found" );
1132  return QPixmap();
1133  }
1134 }
1135 
1137 {
1138  if ( strcmp( c, "SolidPattern" ) == 0 )
1139  {
1140  return QPixmap( solidData );
1141  }
1142  else if ( strcmp( c, "Dense1Pattern" ) == 0 )
1143  {
1144  return QPixmap( dense1Data );
1145  }
1146  else if ( strcmp( c, "Dense2Pattern" ) == 0 )
1147  {
1148  return QPixmap( dense2Data );
1149  }
1150  else if ( strcmp( c, "Dense3Pattern" ) == 0 )
1151  {
1152  return QPixmap( dense3Data );
1153  }
1154  else if ( strcmp( c, "Dense4Pattern" ) == 0 )
1155  {
1156  return QPixmap( dense4Data );
1157  }
1158  else if ( strcmp( c, "Dense5Pattern" ) == 0 )
1159  {
1160  return QPixmap( dense5Data );
1161  }
1162  else if ( strcmp( c, "Dense6Pattern" ) == 0 )
1163  {
1164  return QPixmap( dense6Data );
1165  }
1166  else if ( strcmp( c, "Dense7Pattern" ) == 0 )
1167  {
1168  return QPixmap( dense7Data );
1169  }
1170  else if ( strcmp( c, "HorPattern" ) == 0 )
1171  {
1172  return QPixmap( horizontalData );
1173  }
1174  else if ( strcmp( c, "VerPattern" ) == 0 )
1175  {
1176  return QPixmap( verticalData );
1177  }
1178  else if ( strcmp( c, "CrossPattern" ) == 0 )
1179  {
1180  return QPixmap( crossData );
1181  }
1182  else if ( strcmp( c, "BDiagPattern" ) == 0 )
1183  {
1184  return QPixmap( bdiagData );
1185  }
1186  else if ( strcmp( c, "FDiagPattern" ) == 0 )
1187  {
1188  return QPixmap( fdiagData );
1189  }
1190  else if ( strcmp( c, "DiagCrossPattern" ) == 0 )
1191  {
1192  return QPixmap( diagCrossData );
1193  }
1194  else if ( strcmp( c, "TexturePattern" ) == 0 )
1195  {
1196  return QPixmap( texturePatternData );
1197  }
1198  else if ( strcmp( c, "NoBrush" ) == 0 )
1199  {
1200  return QPixmap( nobrush );
1201  }
1202  else
1203  {
1204  QgsDebugMsg( "no matching pattern found" );
1205  return QPixmap();
1206  }
1207 
1208 }
1209 
1210 Qt::PenStyle QgsSymbologyUtils::char2PenStyle( const char *c )
1211 {
1212  if ( strcmp( c, "NoPen" ) == 0 )
1213  {
1214  return Qt::NoPen;
1215  }
1216  else if ( strcmp( c, "SolidLine" ) == 0 )
1217  {
1218  return Qt::SolidLine;
1219  }
1220  else if ( strcmp( c, "DashLine" ) == 0 )
1221  {
1222  return Qt::DashLine;
1223  }
1224  else if ( strcmp( c, "DotLine" ) == 0 )
1225  {
1226  return Qt::DotLine;
1227  }
1228  else if ( strcmp( c, "DashDotLine" ) == 0 )
1229  {
1230  return Qt::DashDotLine;
1231  }
1232  else if ( strcmp( c, "DashDotDotLine" ) == 0 )
1233  {
1234  return Qt::DashDotDotLine;
1235  }
1236  else if ( strcmp( c, "MPenStyle" ) == 0 )
1237  {
1238  return Qt::MPenStyle;
1239  }
1240  else
1241  {
1242  QgsDebugMsg( "no matching pen style found" );
1243  return Qt::NoPen;
1244  }
1245 }
1246 
1247 Qt::BrushStyle QgsSymbologyUtils::char2BrushStyle( const char *c )
1248 {
1249  if ( strcmp( c, "SolidPattern" ) == 0 )
1250  {
1251  return Qt::SolidPattern;
1252  }
1253  else if ( strcmp( c, "Dense1Pattern" ) == 0 )
1254  {
1255  return Qt::Dense1Pattern;
1256  }
1257  else if ( strcmp( c, "Dense2Pattern" ) == 0 )
1258  {
1259  return Qt::Dense2Pattern;
1260  }
1261  else if ( strcmp( c, "Dense3Pattern" ) == 0 )
1262  {
1263  return Qt::Dense3Pattern;
1264  }
1265  else if ( strcmp( c, "Dense4Pattern" ) == 0 )
1266  {
1267  return Qt::Dense4Pattern;
1268  }
1269  else if ( strcmp( c, "Dense5Pattern" ) == 0 )
1270  {
1271  return Qt::Dense5Pattern;
1272  }
1273  else if ( strcmp( c, "Dense6Pattern" ) == 0 )
1274  {
1275  return Qt::Dense6Pattern;
1276  }
1277  else if ( strcmp( c, "Dense7Pattern" ) == 0 )
1278  {
1279  return Qt::Dense7Pattern;
1280  }
1281  else if ( strcmp( c, "HorPattern" ) == 0 )
1282  {
1283  return Qt::HorPattern;
1284  }
1285  else if ( strcmp( c, "VerPattern" ) == 0 )
1286  {
1287  return Qt::VerPattern;
1288  }
1289  else if ( strcmp( c, "CrossPattern" ) == 0 )
1290  {
1291  return Qt::CrossPattern;
1292  }
1293  else if ( strcmp( c, "BDiagPattern" ) == 0 )
1294  {
1295  return Qt::BDiagPattern;
1296  }
1297  else if ( strcmp( c, "FDiagPattern" ) == 0 )
1298  {
1299  return Qt::FDiagPattern;
1300  }
1301  else if ( strcmp( c, "DiagCrossPattern" ) == 0 )
1302  {
1303  return Qt::DiagCrossPattern;
1304  }
1305  else if ( strcmp( c, "TexturePattern" ) == 0 )
1306  {
1307  return Qt::TexturePattern;
1308  }
1309  else if ( strcmp( c, "NoBrush" ) == 0 )
1310  {
1311  return Qt::NoBrush;
1312  }
1313  else //return a null string
1314  {
1315  QgsDebugMsg( "no matching brush style found" );
1316  return Qt::NoBrush;
1317  }
1318 }
1319 
1320 QPixmap QgsSymbologyUtils::penStyle2Pixmap( Qt::PenStyle penstyle )
1321 {
1322  switch ( penstyle )
1323  {
1324  case( Qt::SolidLine ):
1325  return QPixmap( solidLineData );
1326  break;
1327  case( Qt::DashLine ):
1328  return QPixmap( dashLineData );
1329  break;
1330  case( Qt::DotLine ):
1331  return QPixmap( dotLineData );
1332  break;
1333  case( Qt::DashDotLine ):
1334  return QPixmap( dashDotLineData );
1335  break;
1336  case( Qt::DashDotDotLine ):
1337  return QPixmap( dashDotDotLineData );
1338  break;
1339  case( Qt::NoPen ):
1340  return QPixmap( noPenLineData );
1341  break;
1342  default:
1343  QgsDebugMsg( "no matching pen style found" );
1344  return QPixmap();
1345  }
1346 }
1347 
1348 QPixmap QgsSymbologyUtils::brushStyle2Pixmap( Qt::BrushStyle brushstyle )
1349 {
1350  switch ( brushstyle )
1351  {
1352  case( Qt::SolidPattern ):
1353  return QPixmap( solidData );
1354  break;
1355  case( Qt::Dense1Pattern ):
1356  return QPixmap( dense1Data );
1357  break;
1358  case( Qt::Dense2Pattern ):
1359  return QPixmap( dense2Data );
1360  break;
1361  case( Qt::Dense3Pattern ):
1362  return QPixmap( dense3Data );
1363  break;
1364  case( Qt::Dense4Pattern ):
1365  return QPixmap( dense4Data );
1366  break;
1367  case( Qt::Dense5Pattern ):
1368  return QPixmap( dense5Data );
1369  break;
1370  case( Qt::Dense6Pattern ):
1371  return QPixmap( dense6Data );
1372  break;
1373  case( Qt::Dense7Pattern ):
1374  return QPixmap( dense7Data );
1375  break;
1376  case( Qt::HorPattern ):
1377  return QPixmap( horizontalData );
1378  break;
1379  case( Qt::VerPattern ):
1380  return QPixmap( verticalData );
1381  break;
1382  case( Qt::CrossPattern ):
1383  return QPixmap( crossData );
1384  break;
1385  case( Qt::BDiagPattern ):
1386  return QPixmap( bdiagData );
1387  break;
1388  case( Qt::FDiagPattern ):
1389  return QPixmap( fdiagData );
1390  break;
1391  case( Qt::DiagCrossPattern ):
1392  return QPixmap( diagCrossData );
1393  break;
1394  case( Qt::TexturePattern ) :
1395  return QPixmap( texturePatternData );
1396  break;
1397  case( Qt::NoBrush ):
1398  return QPixmap( nobrush );
1399  default:
1400  QgsDebugMsg( "no matching pattern found" );
1401  }
1402 
1403  return QPixmap(); // XXX I hope returning a blank one is ok
1404 }