3
/////////////////////////////////////////////////////////////////////////////
5
// Copyright (c) 2002 Iain Murray
7
/////////////////////////////////////////////////////////////////////////////
12
using namespace Dasher;
14
using namespace expat;
17
CColourIO::CColourIO(string SystemLocation, string UserLocation, vector<string> Filenames)
18
: SystemLocation(SystemLocation), UserLocation(UserLocation),
19
Filenames(Filenames), BlankInfo(), LoadMutable(false), CData("")
24
ParseFile(SystemLocation + "colour.xml");
25
if (Filenames.size()>0) {
26
for (int i=0; i<Filenames.size(); i++) {
27
ParseFile(SystemLocation + Filenames[i]);
31
ParseFile(UserLocation + "colour.xml");
32
if (Filenames.size()>0) {
33
for (int i=0; i<Filenames.size(); i++) {
34
ParseFile(UserLocation + Filenames[i]);
40
void CColourIO::ParseFile(std::string Filename)
43
if ((Input = fopen (Filename.c_str(), "r")) == (FILE*)0) {
44
// could not open file
48
XML_Parser Parser = XML_ParserCreate(NULL);
50
// Members passed as callbacks must be static, so don't have a "this" pointer.
51
// We give them one through horrible casting so they can effect changes.
52
XML_SetUserData(Parser, this);
54
XML_SetElementHandler(Parser, XML_StartElement, XML_EndElement);
55
XML_SetCharacterDataHandler(Parser, XML_CharacterData);
57
const unsigned int BufferSize = 1024;
58
char Buffer[BufferSize];
61
size_t len = fread(Buffer, 1, sizeof(Buffer), Input);
62
Done = len < sizeof(Buffer);
63
if (XML_Parse(Parser, Buffer, len, Done) == XML_STATUS_ERROR) {
68
XML_ParserFree(Parser);
73
void CColourIO::GetColours(std::vector< std::string > * ColourList) const
77
typedef std::map<std::string, ColourInfo>::const_iterator CI;
78
CI End = Colours.end();
80
for (CI Cur=Colours.begin(); Cur!=End; Cur++)
81
ColourList->push_back( (*Cur).second.ColourID);
85
const CColourIO::ColourInfo& CColourIO::GetInfo(const std::string& ColourID)
87
if (ColourID=="") // return Default if no colour scheme is specified
88
return Colours["Default"];
90
if (Colours.count(ColourID)!=0) {
91
ColourInfo& CurInfo = Colours[ColourID];
92
Colours[ColourID].ColourID = ColourID; // Ensure consistency
93
return Colours[ColourID];
95
// if we don't have the colour scheme they asked for, return default
96
return Colours["Default"];
102
void CColourIO::SetInfo(const ColourInfo& NewInfo)
104
Colours[NewInfo.ColourID] = NewInfo;
105
Save(NewInfo.ColourID);
109
void CColourIO::Delete(const std::string& ColourID)
111
if (Colours.find(ColourID)!=Colours.end()) {
112
Colours.erase(ColourID);
118
void CColourIO::Save(const std::string& ColourID)
120
// Write an XML file containing all the colours that have been defined.
121
// I am not going to indent the XML file as it will just bloat it, and it
122
// is very simple. There are line breaks though as it is very hard to read
123
// without. I'm going to ignore ColourID and save all alphabets as the
124
// overhead doesn't seem to matter and it makes things much easier.
127
string Filename = UserLocation + "colours.xml";
128
if ((Output = fopen (Filename.c_str(), "w")) == (FILE*)0) {
129
// could not open file
132
fwrite("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", sizeof(char), 39, Output);
133
fwrite("<!DOCTYPE alphabets SYSTEM \"colours.dtd\">\n", sizeof(char), 43, Output);
134
fwrite("<?xml-stylesheet type=\"text/xsl\" href=\"colours.xsl\"?>\n", sizeof(char), 55, Output);
135
fwrite("<colours>\n", sizeof(char), 12, Output);
137
// typedef std::map<std::string, AlphInfo>::const_iterator CI;
138
// CI End = Alphabets.end();
139
// for (CI Cur=Alphabets.begin(); Cur!=End; Cur++) {
140
// AlphInfo Info = (*Cur).second; // Take a copy so that special characters can be escaped
142
// if (Info.Mutable==false) // this is a system alphabet, not one we write
145
// fwrite("<alphabet name=\"", sizeof(char), 16, Output);
146
// XML_Escape(&Info.AlphID, true);
147
// fwrite(Info.AlphID.c_str(), sizeof(char), Info.AlphID.size(), Output);
148
// fwrite("\">\n", sizeof(char), 3, Output);
150
// fwrite("<orientation type=\"", sizeof(char), 19, Output);
151
// switch (Info.Orientation) {
152
// case Opts::RightToLeft:
153
// fwrite("RL", sizeof(char), 2, Output);
155
// case Opts::TopToBottom:
156
// fwrite("TB", sizeof(char), 2, Output);
158
// case Opts::BottomToTop:
159
// fwrite("BT", sizeof(char), 2, Output);
161
// case Opts::LeftToRight:
162
// // deliberate fall through
164
// fwrite("LR", sizeof(char), 2, Output);
167
// fwrite("\"/>\n", sizeof(char), 4, Output);
169
// // TODO Encoding properly
170
// fwrite("<encoding type=\"", sizeof(char), 16, Output);
171
// fwrite(TtoS[Info.Type].c_str(), sizeof(char), TtoS[Info.Type].size(), Output);
172
// fwrite("\"/>\n", sizeof(char), 4, Output);
174
// fwrite("<train>", sizeof(char), 7, Output);
175
// XML_Escape(&Info.TrainingFile, false);
176
// fwrite(Info.TrainingFile.c_str(), sizeof(char), Info.TrainingFile.size(), Output);
177
// fwrite("</train>\n", sizeof(char), 9, Output);
179
// fwrite("<space d=\"", sizeof(char), 10, Output);
180
// XML_Escape(&Info.SpaceCharacter.Display, true);
181
// fwrite(Info.SpaceCharacter.Display.c_str(), sizeof(char), Info.SpaceCharacter.Display.size(), Output);
182
// fwrite("\" t=\"", sizeof(char), 5, Output);
183
// XML_Escape(&Info.SpaceCharacter.Text, true);
184
//fwrite(Info.SpaceCharacter.Text.c_str(), sizeof(char), Info.SpaceCharacter.Text.size(), Output);
185
// fwrite("\"/>\n", sizeof(char), 4, Output);
187
// typedef vector<AlphInfo::group>::iterator gi;
188
// gi LG = Info.Groups.end();
189
// for (gi CG = Info.Groups.begin(); CG!=LG; CG++) {
190
// fwrite("<group name=\"", sizeof(char), 13, Output);
191
// XML_Escape(&CG->Description, true);
192
// fwrite(CG->Description.c_str(), sizeof(char), CG->Description.size(), Output);
193
// fwrite("\">\n", sizeof(char), 3, Output);
195
// // Iterate over CG->Characters
196
// typedef vector<AlphInfo::character>::iterator ci;
197
// ci LC = CG->Characters.end();
198
// for (ci CC=CG->Characters.begin(); CC!=LC; CC++) {
199
// fwrite("<s d=\"", sizeof(char), 6, Output);
200
// XML_Escape(&CC->Display, true);
201
// fwrite(CC->Display.c_str(), sizeof(char), CC->Display.size(), Output);
202
// fwrite("\" t=\"", sizeof(char), 5, Output);
203
// XML_Escape(&CC->Text, true);
204
// fwrite(CC->Text.c_str(), sizeof(char), CC->Text.size(), Output);
205
// fwrite("\"/>\n", sizeof(char), 4, Output);
208
// fwrite("</group>\n", sizeof(char), 9, Output);
211
// fwrite("</alphabet>\n", sizeof(char), 12, Output);
214
// fwrite("</alphabets>\n", sizeof(char), 13, Output);
220
void CColourIO::CreateDefault()
222
ColourInfo& Default = Colours["Default"];
223
Default.ColourID = "Default";
224
Default.Mutable = false;
225
Default.Reds.push_back(255);
226
Default.Greens.push_back(255);
227
Default.Blues.push_back(255);
228
Default.Reds.push_back(255);
229
Default.Greens.push_back(0);
230
Default.Blues.push_back(0);
231
Default.Reds.push_back(0);
232
Default.Greens.push_back(0);
233
Default.Blues.push_back(0);
234
Default.Reds.push_back(218);
235
Default.Greens.push_back(218);
236
Default.Blues.push_back(218);
237
Default.Reds.push_back(0);
238
Default.Greens.push_back(0);
239
Default.Blues.push_back(0);
240
Default.Reds.push_back(0);
241
Default.Greens.push_back(0);
242
Default.Blues.push_back(0);
243
Default.Reds.push_back(0);
244
Default.Greens.push_back(0);
245
Default.Blues.push_back(0);
246
Default.Reds.push_back(180);
247
Default.Greens.push_back(238);
248
Default.Blues.push_back(180);
249
Default.Reds.push_back(80);
250
Default.Greens.push_back(80);
251
Default.Blues.push_back(80);
252
Default.Reds.push_back(235);
253
Default.Greens.push_back(235);
254
Default.Blues.push_back(235);
255
Default.Reds.push_back(0);
256
Default.Greens.push_back(255);
257
Default.Blues.push_back(255);
258
Default.Reds.push_back(180);
259
Default.Greens.push_back(238);
260
Default.Blues.push_back(180);
261
Default.Reds.push_back(155);
262
Default.Greens.push_back(205);
263
Default.Blues.push_back(155);
264
Default.Reds.push_back(0);
265
Default.Greens.push_back(255);
266
Default.Blues.push_back(255);
267
Default.Reds.push_back(180);
268
Default.Greens.push_back(238);
269
Default.Blues.push_back(180);
270
Default.Reds.push_back(155);
271
Default.Greens.push_back(205);
272
Default.Blues.push_back(155);
273
Default.Reds.push_back(0);
274
Default.Greens.push_back(255);
275
Default.Blues.push_back(255);
276
Default.Reds.push_back(180);
277
Default.Greens.push_back(238);
278
Default.Blues.push_back(180);
279
Default.Reds.push_back(155);
280
Default.Greens.push_back(205);
281
Default.Blues.push_back(155);
282
Default.Reds.push_back(0);
283
Default.Greens.push_back(255);
284
Default.Blues.push_back(255);
285
Default.Reds.push_back(180);
286
Default.Greens.push_back(238);
287
Default.Blues.push_back(180);
288
Default.Reds.push_back(155);
289
Default.Greens.push_back(205);
290
Default.Blues.push_back(155);
291
Default.Reds.push_back(0);
292
Default.Greens.push_back(255);
293
Default.Blues.push_back(255);
294
Default.Reds.push_back(180);
295
Default.Greens.push_back(238);
296
Default.Blues.push_back(180);
297
Default.Reds.push_back(155);
298
Default.Greens.push_back(205);
299
Default.Blues.push_back(155);
300
Default.Reds.push_back(0);
301
Default.Greens.push_back(255);
302
Default.Blues.push_back(255);
303
Default.Reds.push_back(180);
304
Default.Greens.push_back(238);
305
Default.Blues.push_back(180);
306
Default.Reds.push_back(155);
307
Default.Greens.push_back(205);
308
Default.Blues.push_back(155);
309
Default.Reds.push_back(0);
310
Default.Greens.push_back(255);
311
Default.Blues.push_back(255);
312
Default.Reds.push_back(180);
313
Default.Greens.push_back(238);
314
Default.Blues.push_back(180);
315
Default.Reds.push_back(155);
316
Default.Greens.push_back(205);
317
Default.Blues.push_back(155);
318
Default.Reds.push_back(0);
319
Default.Greens.push_back(255);
320
Default.Blues.push_back(255);
321
Default.Reds.push_back(180);
322
Default.Greens.push_back(238);
323
Default.Blues.push_back(180);
324
Default.Reds.push_back(155);
325
Default.Greens.push_back(205);
326
Default.Blues.push_back(155);
327
Default.Reds.push_back(0);
328
Default.Greens.push_back(255);
329
Default.Blues.push_back(255);
330
Default.Reds.push_back(180);
331
Default.Greens.push_back(238);
332
Default.Blues.push_back(180);
333
Default.Reds.push_back(155);
334
Default.Greens.push_back(205);
335
Default.Blues.push_back(155);
336
Default.Reds.push_back(0);
337
Default.Greens.push_back(255);
338
Default.Blues.push_back(255);
339
Default.Reds.push_back(180);
340
Default.Greens.push_back(238);
341
Default.Blues.push_back(180);
342
Default.Reds.push_back(155);
343
Default.Greens.push_back(205);
344
Default.Blues.push_back(155);
345
Default.Reds.push_back(0);
346
Default.Greens.push_back(255);
347
Default.Blues.push_back(255);
348
Default.Reds.push_back(180);
349
Default.Greens.push_back(238);
350
Default.Blues.push_back(180);
351
Default.Reds.push_back(155);
352
Default.Greens.push_back(205);
353
Default.Blues.push_back(155);
354
Default.Reds.push_back(0);
355
Default.Greens.push_back(255);
356
Default.Blues.push_back(255);
357
Default.Reds.push_back(180);
358
Default.Greens.push_back(238);
359
Default.Blues.push_back(180);
360
Default.Reds.push_back(155);
361
Default.Greens.push_back(205);
362
Default.Blues.push_back(155);
363
Default.Reds.push_back(0);
364
Default.Greens.push_back(255);
365
Default.Blues.push_back(255);
366
Default.Reds.push_back(180);
367
Default.Greens.push_back(238);
368
Default.Blues.push_back(180);
369
Default.Reds.push_back(155);
370
Default.Greens.push_back(205);
371
Default.Blues.push_back(155);
372
Default.Reds.push_back(0);
373
Default.Greens.push_back(255);
374
Default.Blues.push_back(255);
375
Default.Reds.push_back(180);
376
Default.Greens.push_back(238);
377
Default.Blues.push_back(180);
378
Default.Reds.push_back(155);
379
Default.Greens.push_back(205);
380
Default.Blues.push_back(155);
381
Default.Reds.push_back(0);
382
Default.Greens.push_back(255);
383
Default.Blues.push_back(255);
384
Default.Reds.push_back(180);
385
Default.Greens.push_back(238);
386
Default.Blues.push_back(180);
387
Default.Reds.push_back(155);
388
Default.Greens.push_back(205);
389
Default.Blues.push_back(155);
390
Default.Reds.push_back(0);
391
Default.Greens.push_back(255);
392
Default.Blues.push_back(255);
393
Default.Reds.push_back(180);
394
Default.Greens.push_back(238);
395
Default.Blues.push_back(180);
396
Default.Reds.push_back(155);
397
Default.Greens.push_back(205);
398
Default.Blues.push_back(155);
399
Default.Reds.push_back(0);
400
Default.Greens.push_back(255);
401
Default.Blues.push_back(255);
402
Default.Reds.push_back(180);
403
Default.Greens.push_back(238);
404
Default.Blues.push_back(180);
405
Default.Reds.push_back(155);
406
Default.Greens.push_back(205);
407
Default.Blues.push_back(155);
408
Default.Reds.push_back(0);
409
Default.Greens.push_back(255);
410
Default.Blues.push_back(255);
411
Default.Reds.push_back(180);
412
Default.Greens.push_back(238);
413
Default.Blues.push_back(180);
414
Default.Reds.push_back(155);
415
Default.Greens.push_back(205);
416
Default.Blues.push_back(155);
417
Default.Reds.push_back(0);
418
Default.Greens.push_back(255);
419
Default.Blues.push_back(255);
420
Default.Reds.push_back(180);
421
Default.Greens.push_back(238);
422
Default.Blues.push_back(180);
423
Default.Reds.push_back(155);
424
Default.Greens.push_back(205);
425
Default.Blues.push_back(155);
426
Default.Reds.push_back(0);
427
Default.Greens.push_back(255);
428
Default.Blues.push_back(255);
429
Default.Reds.push_back(180);
430
Default.Greens.push_back(238);
431
Default.Blues.push_back(180);
432
Default.Reds.push_back(155);
433
Default.Greens.push_back(205);
434
Default.Blues.push_back(155);
435
Default.Reds.push_back(0);
436
Default.Greens.push_back(255);
437
Default.Blues.push_back(255);
438
Default.Reds.push_back(180);
439
Default.Greens.push_back(238);
440
Default.Blues.push_back(180);
441
Default.Reds.push_back(155);
442
Default.Greens.push_back(205);
443
Default.Blues.push_back(155);
444
Default.Reds.push_back(0);
445
Default.Greens.push_back(255);
446
Default.Blues.push_back(255);
447
Default.Reds.push_back(180);
448
Default.Greens.push_back(238);
449
Default.Blues.push_back(180);
450
Default.Reds.push_back(155);
451
Default.Greens.push_back(205);
452
Default.Blues.push_back(155);
453
Default.Reds.push_back(0);
454
Default.Greens.push_back(255);
455
Default.Blues.push_back(255);
456
Default.Reds.push_back(180);
457
Default.Greens.push_back(238);
458
Default.Blues.push_back(180);
459
Default.Reds.push_back(155);
460
Default.Greens.push_back(205);
461
Default.Blues.push_back(155);
462
Default.Reds.push_back(0);
463
Default.Greens.push_back(255);
464
Default.Blues.push_back(255);
465
Default.Reds.push_back(180);
466
Default.Greens.push_back(238);
467
Default.Blues.push_back(180);
468
Default.Reds.push_back(155);
469
Default.Greens.push_back(205);
470
Default.Blues.push_back(155);
471
Default.Reds.push_back(0);
472
Default.Greens.push_back(255);
473
Default.Blues.push_back(255);
474
Default.Reds.push_back(180);
475
Default.Greens.push_back(238);
476
Default.Blues.push_back(180);
477
Default.Reds.push_back(155);
478
Default.Greens.push_back(205);
479
Default.Blues.push_back(155);
480
Default.Reds.push_back(0);
481
Default.Greens.push_back(255);
482
Default.Blues.push_back(255);
483
Default.Reds.push_back(180);
484
Default.Greens.push_back(238);
485
Default.Blues.push_back(180);
486
Default.Reds.push_back(155);
487
Default.Greens.push_back(205);
488
Default.Blues.push_back(155);
489
Default.Reds.push_back(0);
490
Default.Greens.push_back(255);
491
Default.Blues.push_back(255);
492
Default.Reds.push_back(180);
493
Default.Greens.push_back(238);
494
Default.Blues.push_back(180);
495
Default.Reds.push_back(155);
496
Default.Greens.push_back(205);
497
Default.Blues.push_back(155);
498
Default.Reds.push_back(0);
499
Default.Greens.push_back(255);
500
Default.Blues.push_back(255);
501
Default.Reds.push_back(180);
502
Default.Greens.push_back(238);
503
Default.Blues.push_back(180);
504
Default.Reds.push_back(155);
505
Default.Greens.push_back(205);
506
Default.Blues.push_back(155);
507
Default.Reds.push_back(0);
508
Default.Greens.push_back(255);
509
Default.Blues.push_back(255);
510
Default.Reds.push_back(180);
511
Default.Greens.push_back(238);
512
Default.Blues.push_back(180);
513
Default.Reds.push_back(155);
514
Default.Greens.push_back(205);
515
Default.Blues.push_back(155);
516
Default.Reds.push_back(0);
517
Default.Greens.push_back(255);
518
Default.Blues.push_back(255);
519
Default.Reds.push_back(180);
520
Default.Greens.push_back(238);
521
Default.Blues.push_back(180);
522
Default.Reds.push_back(155);
523
Default.Greens.push_back(205);
524
Default.Blues.push_back(155);
525
Default.Reds.push_back(0);
526
Default.Greens.push_back(255);
527
Default.Blues.push_back(255);
528
Default.Reds.push_back(180);
529
Default.Greens.push_back(238);
530
Default.Blues.push_back(180);
531
Default.Reds.push_back(155);
532
Default.Greens.push_back(205);
533
Default.Blues.push_back(155);
534
Default.Reds.push_back(0);
535
Default.Greens.push_back(255);
536
Default.Blues.push_back(255);
537
Default.Reds.push_back(180);
538
Default.Greens.push_back(238);
539
Default.Blues.push_back(180);
540
Default.Reds.push_back(155);
541
Default.Greens.push_back(205);
542
Default.Blues.push_back(155);
543
Default.Reds.push_back(0);
544
Default.Greens.push_back(255);
545
Default.Blues.push_back(255);
546
Default.Reds.push_back(180);
547
Default.Greens.push_back(238);
548
Default.Blues.push_back(180);
549
Default.Reds.push_back(155);
550
Default.Greens.push_back(205);
551
Default.Blues.push_back(155);
552
Default.Reds.push_back(0);
553
Default.Greens.push_back(255);
554
Default.Blues.push_back(255);
555
Default.Reds.push_back(255);
556
Default.Greens.push_back(0);
557
Default.Blues.push_back(0);
558
Default.Reds.push_back(255);
559
Default.Greens.push_back(255);
560
Default.Blues.push_back(0);
561
Default.Reds.push_back(0);
562
Default.Greens.push_back(200);
563
Default.Blues.push_back(0);
564
Default.Reds.push_back(255);
565
Default.Greens.push_back(0);
566
Default.Blues.push_back(0);
567
Default.Reds.push_back(255);
568
Default.Greens.push_back(255);
569
Default.Blues.push_back(0);
570
Default.Reds.push_back(0);
571
Default.Greens.push_back(200);
572
Default.Blues.push_back(0);
573
Default.Reds.push_back(255);
574
Default.Greens.push_back(0);
575
Default.Blues.push_back(0);
576
Default.Reds.push_back(255);
577
Default.Greens.push_back(255);
578
Default.Blues.push_back(0);
579
Default.Reds.push_back(0);
580
Default.Greens.push_back(200);
581
Default.Blues.push_back(0);
582
Default.Reds.push_back(255);
583
Default.Greens.push_back(0);
584
Default.Blues.push_back(0);
585
Default.Reds.push_back(255);
586
Default.Greens.push_back(255);
587
Default.Blues.push_back(0);
588
Default.Reds.push_back(0);
589
Default.Greens.push_back(200);
590
Default.Blues.push_back(0);
591
Default.Reds.push_back(255);
592
Default.Greens.push_back(0);
593
Default.Blues.push_back(0);
594
Default.Reds.push_back(255);
595
Default.Greens.push_back(255);
596
Default.Blues.push_back(0);
597
Default.Reds.push_back(0);
598
Default.Greens.push_back(200);
599
Default.Blues.push_back(0);
600
Default.Reds.push_back(255);
601
Default.Greens.push_back(0);
602
Default.Blues.push_back(0);
603
Default.Reds.push_back(255);
604
Default.Greens.push_back(255);
605
Default.Blues.push_back(0);
606
Default.Reds.push_back(0);
607
Default.Greens.push_back(200);
608
Default.Blues.push_back(0);
609
Default.Reds.push_back(255);
610
Default.Greens.push_back(0);
611
Default.Blues.push_back(0);
612
Default.Reds.push_back(255);
613
Default.Greens.push_back(255);
614
Default.Blues.push_back(0);
615
Default.Reds.push_back(0);
616
Default.Greens.push_back(0);
617
Default.Blues.push_back(0);
618
Default.Reds.push_back(0);
619
Default.Greens.push_back(0);
620
Default.Blues.push_back(0);
621
Default.Reds.push_back(0);
622
Default.Greens.push_back(0);
623
Default.Blues.push_back(0);
624
Default.Reds.push_back(0);
625
Default.Greens.push_back(0);
626
Default.Blues.push_back(0);
627
Default.Reds.push_back(0);
628
Default.Greens.push_back(0);
629
Default.Blues.push_back(0);
630
Default.Reds.push_back(0);
631
Default.Greens.push_back(0);
632
Default.Blues.push_back(0);
633
Default.Reds.push_back(0);
634
Default.Greens.push_back(0);
635
Default.Blues.push_back(0);
636
Default.Reds.push_back(0);
637
Default.Greens.push_back(0);
638
Default.Blues.push_back(0);
639
Default.Reds.push_back(80);
640
Default.Greens.push_back(80);
641
Default.Blues.push_back(80);
642
Default.Reds.push_back(255);
643
Default.Greens.push_back(255);
644
Default.Blues.push_back(255);
645
Default.Reds.push_back(135);
646
Default.Greens.push_back(206);
647
Default.Blues.push_back(255);
648
Default.Reds.push_back(255);
649
Default.Greens.push_back(174);
650
Default.Blues.push_back(185);
651
Default.Reds.push_back(255);
652
Default.Greens.push_back(187);
653
Default.Blues.push_back(255);
654
Default.Reds.push_back(135);
655
Default.Greens.push_back(206);
656
Default.Blues.push_back(255);
657
Default.Reds.push_back(255);
658
Default.Greens.push_back(174);
659
Default.Blues.push_back(185);
660
Default.Reds.push_back(255);
661
Default.Greens.push_back(187);
662
Default.Blues.push_back(255);
663
Default.Reds.push_back(135);
664
Default.Greens.push_back(206);
665
Default.Blues.push_back(255);
666
Default.Reds.push_back(255);
667
Default.Greens.push_back(174);
668
Default.Blues.push_back(185);
669
Default.Reds.push_back(255);
670
Default.Greens.push_back(187);
671
Default.Blues.push_back(255);
672
Default.Reds.push_back(135);
673
Default.Greens.push_back(206);
674
Default.Blues.push_back(255);
675
Default.Reds.push_back(255);
676
Default.Greens.push_back(174);
677
Default.Blues.push_back(185);
678
Default.Reds.push_back(255);
679
Default.Greens.push_back(187);
680
Default.Blues.push_back(255);
681
Default.Reds.push_back(135);
682
Default.Greens.push_back(206);
683
Default.Blues.push_back(255);
684
Default.Reds.push_back(255);
685
Default.Greens.push_back(174);
686
Default.Blues.push_back(185);
687
Default.Reds.push_back(255);
688
Default.Greens.push_back(187);
689
Default.Blues.push_back(255);
690
Default.Reds.push_back(135);
691
Default.Greens.push_back(206);
692
Default.Blues.push_back(255);
693
Default.Reds.push_back(255);
694
Default.Greens.push_back(174);
695
Default.Blues.push_back(185);
696
Default.Reds.push_back(255);
697
Default.Greens.push_back(187);
698
Default.Blues.push_back(255);
699
Default.Reds.push_back(135);
700
Default.Greens.push_back(206);
701
Default.Blues.push_back(255);
702
Default.Reds.push_back(255);
703
Default.Greens.push_back(174);
704
Default.Blues.push_back(185);
705
Default.Reds.push_back(255);
706
Default.Greens.push_back(187);
707
Default.Blues.push_back(255);
708
Default.Reds.push_back(135);
709
Default.Greens.push_back(206);
710
Default.Blues.push_back(255);
711
Default.Reds.push_back(255);
712
Default.Greens.push_back(174);
713
Default.Blues.push_back(185);
714
Default.Reds.push_back(255);
715
Default.Greens.push_back(187);
716
Default.Blues.push_back(255);
717
Default.Reds.push_back(135);
718
Default.Greens.push_back(206);
719
Default.Blues.push_back(255);
720
Default.Reds.push_back(255);
721
Default.Greens.push_back(174);
722
Default.Blues.push_back(185);
723
Default.Reds.push_back(255);
724
Default.Greens.push_back(187);
725
Default.Blues.push_back(255);
726
Default.Reds.push_back(135);
727
Default.Greens.push_back(206);
728
Default.Blues.push_back(255);
729
Default.Reds.push_back(255);
730
Default.Greens.push_back(174);
731
Default.Blues.push_back(185);
732
Default.Reds.push_back(255);
733
Default.Greens.push_back(187);
734
Default.Blues.push_back(255);
735
Default.Reds.push_back(135);
736
Default.Greens.push_back(206);
737
Default.Blues.push_back(255);
738
Default.Reds.push_back(255);
739
Default.Greens.push_back(174);
740
Default.Blues.push_back(185);
741
Default.Reds.push_back(255);
742
Default.Greens.push_back(187);
743
Default.Blues.push_back(255);
744
Default.Reds.push_back(135);
745
Default.Greens.push_back(206);
746
Default.Blues.push_back(255);
747
Default.Reds.push_back(255);
748
Default.Greens.push_back(174);
749
Default.Blues.push_back(185);
750
Default.Reds.push_back(255);
751
Default.Greens.push_back(187);
752
Default.Blues.push_back(255);
753
Default.Reds.push_back(135);
754
Default.Greens.push_back(206);
755
Default.Blues.push_back(255);
756
Default.Reds.push_back(255);
757
Default.Greens.push_back(174);
758
Default.Blues.push_back(185);
759
Default.Reds.push_back(255);
760
Default.Greens.push_back(187);
761
Default.Blues.push_back(255);
762
Default.Reds.push_back(135);
763
Default.Greens.push_back(206);
764
Default.Blues.push_back(255);
765
Default.Reds.push_back(255);
766
Default.Greens.push_back(174);
767
Default.Blues.push_back(185);
768
Default.Reds.push_back(255);
769
Default.Greens.push_back(187);
770
Default.Blues.push_back(255);
771
Default.Reds.push_back(135);
772
Default.Greens.push_back(206);
773
Default.Blues.push_back(255);
774
Default.Reds.push_back(255);
775
Default.Greens.push_back(174);
776
Default.Blues.push_back(185);
777
Default.Reds.push_back(255);
778
Default.Greens.push_back(187);
779
Default.Blues.push_back(255);
780
Default.Reds.push_back(135);
781
Default.Greens.push_back(206);
782
Default.Blues.push_back(255);
783
Default.Reds.push_back(255);
784
Default.Greens.push_back(174);
785
Default.Blues.push_back(185);
786
Default.Reds.push_back(255);
787
Default.Greens.push_back(187);
788
Default.Blues.push_back(255);
789
Default.Reds.push_back(135);
790
Default.Greens.push_back(206);
791
Default.Blues.push_back(255);
792
Default.Reds.push_back(255);
793
Default.Greens.push_back(174);
794
Default.Blues.push_back(185);
795
Default.Reds.push_back(255);
796
Default.Greens.push_back(187);
797
Default.Blues.push_back(255);
798
Default.Reds.push_back(135);
799
Default.Greens.push_back(206);
800
Default.Blues.push_back(255);
801
Default.Reds.push_back(255);
802
Default.Greens.push_back(174);
803
Default.Blues.push_back(185);
804
Default.Reds.push_back(255);
805
Default.Greens.push_back(187);
806
Default.Blues.push_back(255);
807
Default.Reds.push_back(135);
808
Default.Greens.push_back(206);
809
Default.Blues.push_back(255);
810
Default.Reds.push_back(255);
811
Default.Greens.push_back(174);
812
Default.Blues.push_back(185);
813
Default.Reds.push_back(255);
814
Default.Greens.push_back(187);
815
Default.Blues.push_back(255);
816
Default.Reds.push_back(135);
817
Default.Greens.push_back(206);
818
Default.Blues.push_back(255);
819
Default.Reds.push_back(255);
820
Default.Greens.push_back(174);
821
Default.Blues.push_back(185);
822
Default.Reds.push_back(255);
823
Default.Greens.push_back(187);
824
Default.Blues.push_back(255);
825
Default.Reds.push_back(135);
826
Default.Greens.push_back(206);
827
Default.Blues.push_back(255);
828
Default.Reds.push_back(255);
829
Default.Greens.push_back(174);
830
Default.Blues.push_back(185);
831
Default.Reds.push_back(255);
832
Default.Greens.push_back(187);
833
Default.Blues.push_back(255);
834
Default.Reds.push_back(135);
835
Default.Greens.push_back(206);
836
Default.Blues.push_back(255);
837
Default.Reds.push_back(255);
838
Default.Greens.push_back(174);
839
Default.Blues.push_back(185);
840
Default.Reds.push_back(255);
841
Default.Greens.push_back(187);
842
Default.Blues.push_back(255);
843
Default.Reds.push_back(135);
844
Default.Greens.push_back(206);
845
Default.Blues.push_back(255);
846
Default.Reds.push_back(255);
847
Default.Greens.push_back(174);
848
Default.Blues.push_back(185);
849
Default.Reds.push_back(255);
850
Default.Greens.push_back(187);
851
Default.Blues.push_back(255);
852
Default.Reds.push_back(135);
853
Default.Greens.push_back(206);
854
Default.Blues.push_back(255);
855
Default.Reds.push_back(255);
856
Default.Greens.push_back(174);
857
Default.Blues.push_back(185);
858
Default.Reds.push_back(255);
859
Default.Greens.push_back(187);
860
Default.Blues.push_back(255);
861
Default.Reds.push_back(135);
862
Default.Greens.push_back(206);
863
Default.Blues.push_back(255);
864
Default.Reds.push_back(255);
865
Default.Greens.push_back(174);
866
Default.Blues.push_back(185);
867
Default.Reds.push_back(255);
868
Default.Greens.push_back(187);
869
Default.Blues.push_back(255);
870
Default.Reds.push_back(135);
871
Default.Greens.push_back(206);
872
Default.Blues.push_back(255);
873
Default.Reds.push_back(255);
874
Default.Greens.push_back(174);
875
Default.Blues.push_back(185);
876
Default.Reds.push_back(255);
877
Default.Greens.push_back(187);
878
Default.Blues.push_back(255);
879
Default.Reds.push_back(135);
880
Default.Greens.push_back(206);
881
Default.Blues.push_back(255);
882
Default.Reds.push_back(255);
883
Default.Greens.push_back(174);
884
Default.Blues.push_back(185);
885
Default.Reds.push_back(255);
886
Default.Greens.push_back(187);
887
Default.Blues.push_back(255);
888
Default.Reds.push_back(135);
889
Default.Greens.push_back(206);
890
Default.Blues.push_back(255);
891
Default.Reds.push_back(255);
892
Default.Greens.push_back(174);
893
Default.Blues.push_back(185);
894
Default.Reds.push_back(255);
895
Default.Greens.push_back(187);
896
Default.Blues.push_back(255);
897
Default.Reds.push_back(135);
898
Default.Greens.push_back(206);
899
Default.Blues.push_back(255);
900
Default.Reds.push_back(255);
901
Default.Greens.push_back(174);
902
Default.Blues.push_back(185);
903
Default.Reds.push_back(255);
904
Default.Greens.push_back(187);
905
Default.Blues.push_back(255);
906
Default.Reds.push_back(135);
907
Default.Greens.push_back(206);
908
Default.Blues.push_back(255);
909
Default.Reds.push_back(255);
910
Default.Greens.push_back(174);
911
Default.Blues.push_back(185);
912
Default.Reds.push_back(255);
913
Default.Greens.push_back(187);
914
Default.Blues.push_back(255);
915
Default.Reds.push_back(135);
916
Default.Greens.push_back(206);
917
Default.Blues.push_back(255);
918
Default.Reds.push_back(255);
919
Default.Greens.push_back(174);
920
Default.Blues.push_back(185);
921
Default.Reds.push_back(255);
922
Default.Greens.push_back(187);
923
Default.Blues.push_back(255);
924
Default.Reds.push_back(135);
925
Default.Greens.push_back(206);
926
Default.Blues.push_back(255);
927
Default.Reds.push_back(255);
928
Default.Greens.push_back(174);
929
Default.Blues.push_back(185);
930
Default.Reds.push_back(255);
931
Default.Greens.push_back(187);
932
Default.Blues.push_back(255);
933
Default.Reds.push_back(135);
934
Default.Greens.push_back(206);
935
Default.Blues.push_back(255);
936
Default.Reds.push_back(255);
937
Default.Greens.push_back(174);
938
Default.Blues.push_back(185);
939
Default.Reds.push_back(255);
940
Default.Greens.push_back(187);
941
Default.Blues.push_back(255);
942
Default.Reds.push_back(135);
943
Default.Greens.push_back(206);
944
Default.Blues.push_back(255);
945
Default.Reds.push_back(0);
946
Default.Greens.push_back(255);
947
Default.Blues.push_back(0);
948
Default.Reds.push_back(240);
949
Default.Greens.push_back(240);
950
Default.Blues.push_back(0);
951
Default.Reds.push_back(255);
952
Default.Greens.push_back(0);
953
Default.Blues.push_back(0);
958
void CColourIO::XML_Escape(std::string* Text, bool Attribute)
960
// The XML "W3C Recommendation" is here: http://www.w3.org/TR/REC-xml
962
string& Input = *Text; // Makes syntax less fiddly below
964
for (unsigned int i=0; i<Text->size(); i++) {
965
// & and < need escaping in XML. In one rare circumstance >
966
// needs escaping too. I'll always do it, as I'm allowed to.
968
Input.replace(i, 1, "&");
972
Input.replace(i, 1, "<");
976
Input.replace(i, 1, ">");
979
// " and ' might need escaping inside attributes, I'll do them all.
980
if (Attribute==false)
983
if (Input[i]=='\'') {
984
Input.replace(i, 1, "'");
988
Input.replace(i, 1, """);
995
// Below here handlers for the Expat XML input library
996
////////////////////////////////////////////////////////////////////////////////////
999
void CColourIO::XML_StartElement(void *userData, const XML_Char *name, const XML_Char **atts)
1001
CColourIO* Me = (CColourIO*) userData;
1005
if (strcmp(name, "palette")==0) {
1007
Me->InputInfo = NewInfo;
1008
Me->InputInfo.Mutable = Me->LoadMutable;
1010
if (strcmp(*atts, "name")==0) {
1012
Me->InputInfo.ColourID = *atts;
1019
if (strcmp(name, "colour")==0) {
1021
if (strcmp(*atts, "r")==0) {
1023
Me->InputInfo.Reds.push_back(atoi(*atts));
1026
if (strcmp(*atts, "g")==0) {
1028
Me->InputInfo.Greens.push_back(atoi(*atts));
1031
if (strcmp(*atts, "b")==0) {
1033
Me->InputInfo.Blues.push_back(atoi(*atts));
1041
void CColourIO::XML_EndElement(void *userData, const XML_Char *name)
1043
CColourIO* Me = (CColourIO*) userData;
1045
if (strcmp(name, "palette")==0) {
1046
Me->Colours[Me->InputInfo.ColourID] = Me->InputInfo;
1052
void CColourIO::XML_CharacterData(void *userData, const XML_Char *s, int len)
1054
// CAREFUL: s points to a string which is NOT null-terminated.
1056
CColourIO* Me = (CColourIO*) userData;
1058
Me->CData.append(s, len);