Logo Search packages:      
Sourcecode: qgis version File versions

qgssymbologyutils.cpp

/***************************************************************************
                         qgssymbologyutils.cpp  -  description
                             -------------------
    begin                : Oct 2003
    copyright            : (C) 2003 by Marco Hugentobler
    email                : mhugent@geo.unizh.ch
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
/* $Id: qgssymbologyutils.cpp,v 1.11.2.1 2004/12/05 22:58:30 mhugent Exp $ */
#include "qgssymbologyutils.h"

static const char *solidLineData[] = {
  "60 26 4 1",
  "a c None",
  "# c None",
  ". c None",
  "b c #0000c5",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
};

static const char *dashLineData[] = {
  "60 26 4 1",
  "a c None",
  "# c None",
  ". c None",
  "b c #0000c5",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "bbbbbbbbbbbba.a.abbbbbbbbbbbb.a.a.bbbbbbbbbbbba.a.abbbbbbbbb",
  "bbbbbbbbbbbb.#.#.bbbbbbbbbbbb#.#.#bbbbbbbbbbbb.#.#.bbbbbbbbb",
  "bbbbbbbbbbbba.a.abbbbbbbbbbbb.a.a.bbbbbbbbbbbba.a.abbbbbbbbb",
  "bbbbbbbbbbbb.#.#.bbbbbbbbbbbb#.#.#bbbbbbbbbbbb.#.#.bbbbbbbbb",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
};

static const char *dotLineData[] = {
  "60 26 4 1",
  "a c None",
  "# c None",
  ". c None",
  "b c #0000c5",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbb",
  "bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb",
  "bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbba.a.bbbb",
  "bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb.#.#bbbb",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
};

static const char *dashDotLineData[] = {
  "60 26 4 1",
  "a c None",
  "# c None",
  ". c None",
  "b c #0000c5",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbb",
  "bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb",
  "bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbba.a.bbbba.a.bbbbbbbbbbbb",
  "bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb.#.#bbbb.#.#bbbbbbbbbbbb",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
};

static const char *dashDotDotLineData[] = {
  "60 26 5 1",
  "a c None",
  "# c None",
  ". c None",
  "c c #0000c5",
  "b c #ffffff",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  "cccccccccccca.a.cccca.a.cccca.a.cccccccccccca.a.cccca.a.cccc",
  "cccccccccccc.#.#cccc.#.#cccc.#.#cccccccccccc.#.#cccc.#.#cccc",
  "cccccccccccca.a.cccca.a.cccca.a.cccccccccccca.a.cccca.a.cccc",
  "cccccccccccc.#.#cccc.#.#cccc.#.#cccccccccccc.#.#cccc.#.#cccc",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."
};

static const char *noPenLineData[] = {
"60 26 3 1",
"a c None",
"# c None",
". c None",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.",
".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a."};

static const char *solidData[] = {
  "58 29 1 1",
  ". c #3155c5",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  ".........................................................."
};

static const char *fdiagData[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "..#.......#.......#.......#.......#.......#.......#.......",
  "...#.......#.......#.......#.......#.......#.......#......",
  "....#.......#.......#.......#.......#.......#.......#.....",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "..#.......#.......#.......#.......#.......#.......#.......",
  "...#.......#.......#.......#.......#.......#.......#......",
  "....#.......#.......#.......#.......#.......#.......#.....",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "..#.......#.......#.......#.......#.......#.......#.......",
  "...#.......#.......#.......#.......#.......#.......#......",
  "....#.......#.......#.......#.......#.......#.......#.....",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "..#.......#.......#.......#.......#.......#.......#......."
};

static const char *dense4Data[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#."
};

static const char *horizontalData[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  "..........................................................",
  "..........................................................",
  "##########################################################",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "##########################################################",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "##########################################################",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "##########################################################",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "##########################################################",
  "..........................................................",
  "..........................................................",
  ".........................................................."
};

static const char *dense5Data[] = {
  "58 30 2 1",
  ". c #3155c5",
  "# c #ffffff",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###."
};

static const char *diagCrossData[] = {
  "57 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "..#.......#.......#.......#.......#.......#.......#......",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "......#.......#.......#.......#.......#.......#.......#..",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "..#.......#.......#.......#.......#.......#.......#......",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "......#.......#.......#.......#.......#.......#.......#..",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "..#.......#.......#.......#.......#.......#.......#......",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "......#.......#.......#.......#.......#.......#.......#..",
  ".....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "..#.......#.......#.......#.......#.......#.......#......",
  ".#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#"
};

static const char *dense1Data[] = {
  "58 30 2 1",
  ". c #3155c5",
  "# c #ffffff",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "..........................................................",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  ".........................................................."
};

static const char *dense6Data[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#...",
  "..........................................................",
  "#...#...#...#...#...#...#...#...#...#...#...#...#...#...#.",
  "..........................................................",
  "..#...#...#...#...#...#...#...#...#...#...#...#...#...#..."
};

static const char *verticalData[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#.."
};

static const char *dense7Data[] = {
  "58 30 2 1",
  ". c #3155c5",
  "# c #ffffff",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################",
  "##########################################################",
  "##########################################################",
  ".###.###.###.###.###.###.###.###.###.###.###.###.###.###.#",
  "##########################################################"
};

static const char *crossData[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  "##########################################################",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  "##########################################################",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  "##########################################################",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  "##########################################################",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  "##########################################################",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#..",
  ".#.....#.....#.....#.....#.....#.....#.....#.....#.....#.."
};

static const char *dense2Data[] = {
  "58 30 2 1",
  ". c #3155c5",
  "# c #ffffff",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#",
  "..........................................................",
  "...#...#...#...#...#...#...#...#...#...#...#...#...#...#..",
  "..........................................................",
  ".#...#...#...#...#...#...#...#...#...#...#...#...#...#...#"
};

static const char *bdiagData[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  "...#.......#.......#.......#.......#.......#.......#......",
  "..#.......#.......#.......#.......#.......#.......#.......",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "....#.......#.......#.......#.......#.......#.......#.....",
  "...#.......#.......#.......#.......#.......#.......#......",
  "..#.......#.......#.......#.......#.......#.......#.......",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "....#.......#.......#.......#.......#.......#.......#.....",
  "...#.......#.......#.......#.......#.......#.......#......",
  "..#.......#.......#.......#.......#.......#.......#.......",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "......#.......#.......#.......#.......#.......#.......#...",
  ".....#.......#.......#.......#.......#.......#.......#....",
  "....#.......#.......#.......#.......#.......#.......#.....",
  "...#.......#.......#.......#.......#.......#.......#......",
  "..#.......#.......#.......#.......#.......#.......#.......",
  ".#.......#.......#.......#.......#.......#.......#.......#",
  "#.......#.......#.......#.......#.......#.......#.......#.",
  ".......#.......#.......#.......#.......#.......#.......#..",
  "......#.......#.......#.......#.......#.......#.......#..."
};

static const char *dense3Data[] = {
  "58 30 2 1",
  "# c #3155c5",
  ". c #ffffff",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "#.###.###.###.###.###.###.###.###.###.###.###.###.###.###.",
  ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
  "###.###.###.###.###.###.###.###.###.###.###.###.###.###.##"
};

static const char *nobrush[] = {
  "58 30 2 1",
  "# c None",
  ". c #3155c5",
  "..........................................................",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".########################################################.",
  ".........................................................."
};

QString QgsSymbologyUtils::penStyle2QString(Qt::PenStyle penstyle)
{
  if (penstyle == Qt::NoPen)
    {
      return "NoPen";
  } else if (penstyle == Qt::SolidLine)
    {
      return "SolidLine";
  } else if (penstyle == Qt::DashLine)
    {
      return "DashLine";
  } else if (penstyle == Qt::DotLine)
    {
      return "DotLine";
  } else if (penstyle == Qt::DashDotLine)
    {
      return "DashDotLine";
  } else if (penstyle == Qt::DashDotDotLine)
    {
      return "DashDotDotLine";
  } else if (penstyle == Qt::MPenStyle)
    {
      return "MPenStyle";
  } else                        //return a null string 
    {
      return QString();
    }
}

Qt::PenStyle QgsSymbologyUtils::qString2PenStyle(QString penString)
{
  if (penString == "NoPen")
    {
      return Qt::NoPen;
  } else if (penString == "SolidLine")
    {
      return Qt::SolidLine;
  } else if (penString == "DashLine")
    {
      return Qt::DashLine;
  } else if (penString == "DotLine")
    {
      return Qt::DotLine;
  } else if (penString == "DashDotLine")
    {
      return Qt::DashDotLine;
  } else if (penString == "DashDotDotLine")
    {
      return Qt::DashDotDotLine;
  } else if (penString == "MPenStyle")
    {
      return Qt::MPenStyle;
  } else
    {
      return Qt::NoPen;
    }
}

QString QgsSymbologyUtils::brushStyle2QString(Qt::BrushStyle brushstyle)
{
  if (brushstyle == Qt::NoBrush)
    {
      return "NoBrush";
  } else if (brushstyle == Qt::SolidPattern)
    {
      return "SolidPattern";
  } else if (brushstyle == Qt::Dense1Pattern)
    {
      return "Dense1Pattern";
  } else if (brushstyle == Qt::Dense2Pattern)
    {
      return "Dense2Pattern";
  } else if (brushstyle == Qt::Dense3Pattern)
    {
      return "Dense3Pattern";
  } else if (brushstyle == Qt::Dense4Pattern)
    {
      return "Dense4Pattern";
  } else if (brushstyle == Qt::Dense5Pattern)
    {
      return "Dense5Pattern";
  } else if (brushstyle == Qt::Dense6Pattern)
    {
      return "Dense6Pattern";
  } else if (brushstyle == Qt::Dense7Pattern)
    {
      return "Dense7Pattern";
  } else if (brushstyle == Qt::HorPattern)
    {
      return "HorPattern";
  } else if (brushstyle == Qt::VerPattern)
    {
      return "VerPattern";
  } else if (brushstyle == Qt::CrossPattern)
    {
      return "CrossPattern";
  } else if (brushstyle == Qt::BDiagPattern)
    {
      return "BDiagPattern";
  } else if (brushstyle == Qt::FDiagPattern)
    {
      return "FDiagPattern";
  } else if (brushstyle == Qt::DiagCrossPattern)
    {
      return "DiagCrossPattern";
  } else if (brushstyle == Qt::CustomPattern)
    {
      return "CustomPattern";
  } else                        //return a null string
    {
      qWarning("Warning, no matching pattern found in QgsSymbologyUtils::brushStyle2QString");
      return " ";
    }
}

Qt::BrushStyle QgsSymbologyUtils::qString2BrushStyle(QString brushString)
{
  if (brushString == "NoBrush")
    {
      return Qt::NoBrush;
  } else if (brushString == "SolidPattern")
    {
      return Qt::SolidPattern;
  } else if (brushString == "Dense1Pattern")
    {
      return Qt::Dense1Pattern;
  } else if (brushString == "Dense2Pattern")
    {
      return Qt::Dense2Pattern;
  } else if (brushString == "Dense3Pattern")
    {
      return Qt::Dense3Pattern;
  } else if (brushString == "Dense4Pattern")
    {
      return Qt::Dense4Pattern;
  } else if (brushString == "Dense5Pattern")
    {
      return Qt::Dense5Pattern;
  } else if (brushString == "Dense6Pattern")
    {
      return Qt::Dense6Pattern;
  } else if (brushString == "Dense7Pattern")
    {
      return Qt::Dense7Pattern;
  } else if (brushString == "HorPattern")
    {
      return Qt::HorPattern;
  } else if (brushString == "VerPattern")
    {
      return Qt::VerPattern;
  } else if (brushString == "CrossPattern")
    {
      return Qt::CrossPattern;
  } else if (brushString == "BDiagPattern")
    {
      return Qt::BDiagPattern;
  } else if (brushString == "FDiagPattern")
    {
      return Qt::FDiagPattern;
  } else if (brushString == "DiagCrossPattern")
    {
      return Qt::DiagCrossPattern;
  } else if (brushString == "CustomPattern")
    {
      return Qt::CustomPattern;
  } else                        //return a null string
    {
      return Qt::NoBrush;
    }
}

QPixmap QgsSymbologyUtils::qString2LinePixmap(QString lineString)
{
  if (lineString == "SolidLine")
    {
      return QPixmap(solidLineData);
    }

  if (lineString == "DashLine")
    {
      return QPixmap(dashLineData);
    }

  if (lineString == "DotLine")
    {
      return QPixmap(dotLineData);
    }

  if (lineString == "DashDotLine")
    {
      return QPixmap(dashDotLineData);
    }

  if (lineString == "DashDotDotLine")
    {
      return QPixmap(dashDotDotLineData);
    }
  if(lineString =="NoPen")
    {
      return QPixmap(noPenLineData);
    }

  return QPixmap();             // XXX I hope returning a blank one is ok
}

QPixmap QgsSymbologyUtils::qString2PatternPixmap(QString patternString)
{
  if (patternString == "SolidPattern")
    {
      return QPixmap(solidData);
  } else if (patternString == "Dense1Pattern")
    {
      return QPixmap(dense1Data);
  } else if (patternString == "Dense2Pattern")
    {
      return QPixmap(dense2Data);
  } else if (patternString == "Dense3Pattern")
    {
      return QPixmap(dense3Data);
  } else if (patternString == "Dense4Pattern")
    {
      return QPixmap(dense4Data);
  } else if (patternString == "Dense5Pattern")
    {
      return QPixmap(dense5Data);
  } else if (patternString == "Dense6Pattern")
    {
      return QPixmap(dense6Data);
  } else if (patternString == "Dense7Pattern")
    {
      return QPixmap(dense7Data);
  } else if (patternString == "HorPattern")
    {
      return QPixmap(horizontalData);
  } else if (patternString == "VerPattern")
    {
      return QPixmap(verticalData);
  } else if (patternString == "CrossPattern")
    {
      return QPixmap(crossData);
  } else if (patternString == "BDiagPattern")
    {
      return QPixmap(bdiagData);
  } else if (patternString == "FDiagPattern")
    {
      return QPixmap(fdiagData);
  } else if (patternString == "DiagCrossPattern")
    {
      return QPixmap(diagCrossData);
  } else if (patternString == "NoBrush")
    {
      return QPixmap(nobrush);
  } else                        //return a null patternString
    {
      qWarning("Warning, no matching pattern found in QgsSymbologyUtils::qString2PatternPixmap");
      return QPixmap();
    }
}

const char * QgsSymbologyUtils::penStyle2Char(Qt::PenStyle penstyle)
{
  if (penstyle == Qt::NoPen)
    {
      return "NoPen";
  } else if (penstyle == Qt::SolidLine)
    {
      return "SolidLine";
  } else if (penstyle == Qt::DashLine)
    {
      return "DashLine";
  } else if (penstyle == Qt::DotLine)
    {
      return "DotLine";
  } else if (penstyle == Qt::DashDotLine)
    {
      return "DashDotLine";
  } else if (penstyle == Qt::DashDotDotLine)
    {
      return "DashDotDotLine";
  } else if (penstyle == Qt::MPenStyle)
    {
      return "MPenStyle";
  } else                        //return an empty char* 
    {
      return " ";
    }
}

const char *QgsSymbologyUtils::brushStyle2Char(Qt::BrushStyle brushstyle)
{
  if (brushstyle == Qt::NoBrush)
    {
      return "NoBrush";
  } else if (brushstyle == Qt::SolidPattern)
    {
      return "SolidPattern";
  } else if (brushstyle == Qt::Dense1Pattern)
    {
      return "Dense1Pattern";
  } else if (brushstyle == Qt::Dense2Pattern)
    {
      return "Dense2Pattern";
  } else if (brushstyle == Qt::Dense3Pattern)
    {
      return "Dense3Pattern";
  } else if (brushstyle == Qt::Dense4Pattern)
    {
      return "Dense4Pattern";
  } else if (brushstyle == Qt::Dense5Pattern)
    {
      return "Dense5Pattern";
  } else if (brushstyle == Qt::Dense6Pattern)
    {
      return "Dense6Pattern";
  } else if (brushstyle == Qt::Dense7Pattern)
    {
      return "Dense7Pattern";
  } else if (brushstyle == Qt::HorPattern)
    {
      return "HorPattern";
  } else if (brushstyle == Qt::VerPattern)
    {
      return "VerPattern";
  } else if (brushstyle == Qt::CrossPattern)
    {
      return "CrossPattern";
  } else if (brushstyle == Qt::BDiagPattern)
    {
      return "BDiagPattern";
  } else if (brushstyle == Qt::FDiagPattern)
    {
      return "FDiagPattern";
  } else if (brushstyle == Qt::DiagCrossPattern)
    {
      return "DiagCrossPattern";
  } else if (brushstyle == Qt::CustomPattern)
    {
      return "CustomPattern";
  } else                        //return an empty char*
    {
      return " ";
    }
}

QPixmap QgsSymbologyUtils::char2LinePixmap(const char *c)
{
  if (strcmp(c, "SolidLine") == 0)
    {
      return QPixmap(solidLineData);
    }

  else if (strcmp(c, "DashLine") == 0)
    {
      return QPixmap(dashLineData);
    }

  else if (strcmp(c, "DotLine") == 0)
    {
      return QPixmap(dotLineData);
    }

  else if (strcmp(c, "DashDotLine") == 0)
    {
      return QPixmap(dashDotLineData);
    }

  else if (strcmp(c, "DashDotDotLine") == 0)
    {
      return QPixmap(dashDotDotLineData);
    }

  else if (strcmp(c, "NoPen") == 0)
    {
      return QPixmap(noPenLineData);
    }

  else
    {
      qWarning("Warning, no matching style found in QgsSymbologyUtils::char2LinePixmap");
      return QPixmap();
    }
}

QPixmap QgsSymbologyUtils::char2PatternPixmap(const char *c)
{
  if (strcmp(c, "SolidPattern") == 0)
    {
      return QPixmap(solidData);
  } else if (strcmp(c, "Dense1Pattern") == 0)
    {
      return QPixmap(dense1Data);
  } else if (strcmp(c, "Dense2Pattern") == 0)
    {
      return QPixmap(dense2Data);
  } else if (strcmp(c, "Dense3Pattern") == 0)
    {
      return QPixmap(dense3Data);
  } else if (strcmp(c, "Dense4Pattern") == 0)
    {
      return QPixmap(dense4Data);
  } else if (strcmp(c, "Dense5Pattern") == 0)
    {
      return QPixmap(dense5Data);
  } else if (strcmp(c, "Dense6Pattern") == 0)
    {
      return QPixmap(dense6Data);
  } else if (strcmp(c, "Dense7Pattern") == 0)
    {
      return QPixmap(dense7Data);
  } else if (strcmp(c, "HorPattern") == 0)
    {
      return QPixmap(horizontalData);
  } else if (strcmp(c, "VerPattern") == 0)
    {
      return QPixmap(verticalData);
  } else if (strcmp(c, "CrossPattern") == 0)
    {
      return QPixmap(crossData);
  } else if (strcmp(c, "BDiagPattern") == 0)
    {
      return QPixmap(bdiagData);
  } else if (strcmp(c, "FDiagPattern") == 0)
    {
      return QPixmap(fdiagData);
  } else if (strcmp(c, "DiagCrossPattern") == 0)
    {
      return QPixmap(diagCrossData);
  } else if (strcmp(c, "NoBrush") == 0)
    {
      return QPixmap(nobrush);
  } else
    {
      qWarning("Warning, no matching pattern found in QgsSymbologyUtils::char2PatternPixmap");
      return QPixmap();
    }

}

Qt::PenStyle QgsSymbologyUtils::char2PenStyle(const char *c)
{
  if (strcmp(c, "NoPen") == 0)
    {
      return Qt::NoPen;
  } else if (strcmp(c, "SolidLine") == 0)
    {
      return Qt::SolidLine;
  } else if (strcmp(c, "DashLine") == 0)
    {
      return Qt::DashLine;
  } else if (strcmp(c, "DotLine") == 0)
    {
      return Qt::DotLine;
  } else if (strcmp(c, "DashDotLine") == 0)
    {
      return Qt::DashDotLine;
  } else if (strcmp(c, "DashDotDotLine") == 0)
    {
      return Qt::DashDotDotLine;
  } else if (strcmp(c, "MPenStyle") == 0)
    {
      return Qt::MPenStyle;
  } else
    {
      qWarning("Warning, no matching pen style found in QgsSymbologyUtils::char2PenStyle");
      return Qt::NoPen;
    }
}

Qt::BrushStyle QgsSymbologyUtils::char2BrushStyle(const char *c)
{
  if (strcmp(c, "SolidPattern") == 0)
    {
      return Qt::SolidPattern;
  } else if (strcmp(c, "Dense1Pattern") == 0)
    {
      return Qt::Dense1Pattern;
  } else if (strcmp(c, "Dense2Pattern") == 0)
    {
      return Qt::Dense2Pattern;
  } else if (strcmp(c, "Dense3Pattern") == 0)
    {
      return Qt::Dense3Pattern;
  } else if (strcmp(c, "Dense4Pattern") == 0)
    {
      return Qt::Dense4Pattern;
  } else if (strcmp(c, "Dense5Pattern") == 0)
    {
      return Qt::Dense5Pattern;
  } else if (strcmp(c, "Dense6Pattern") == 0)
    {
      return Qt::Dense6Pattern;
  } else if (strcmp(c, "Dense7Pattern") == 0)
    {
      return Qt::Dense7Pattern;
  } else if (strcmp(c, "HorPattern") == 0)
    {
      return Qt::HorPattern;
  } else if (strcmp(c, "VerPattern") == 0)
    {
      return Qt::VerPattern;
  } else if (strcmp(c, "CrossPattern") == 0)
    {
      return Qt::CrossPattern;
  } else if (strcmp(c, "BDiagPattern") == 0)
    {
      return Qt::BDiagPattern;
  } else if (strcmp(c, "FDiagPattern") == 0)
    {
      return Qt::FDiagPattern;
  } else if (strcmp(c, "DiagCrossPattern") == 0)
    {
      return Qt::DiagCrossPattern;
  } else if (strcmp(c, "CustomPattern") == 0)
    {
      return Qt::CustomPattern;
  } else if(strcmp(c, "NoBrush") == 0)
{
    return Qt::NoBrush;
}else                        //return a null string
    {
      qWarning("Warning, no matching brush style found in QgsSymbologyUtils::char2BrushStyle");
      return Qt::NoBrush;
    }
}

QPixmap QgsSymbologyUtils::penStyle2Pixmap(Qt::PenStyle penstyle)
{
  switch (penstyle)
    {
      case (Qt::SolidLine):
        return QPixmap(solidLineData);
        break;
      case (Qt::DashLine):
        return QPixmap(dashLineData);
        break;
      case (Qt::DotLine):
        return QPixmap(dotLineData);
        break;
      case (Qt::DashDotLine):
        return QPixmap(dashDotLineData);
        break;
      case (Qt::DashDotDotLine):
        return QPixmap(dashDotDotLineData);
        break;
      case (Qt::NoPen):
      return QPixmap(noPenLineData);
      break;
      default:
        qWarning("Warning, no matching pen style found in QgsSymbologyUtils::penStyle2Pixmap");
        return QPixmap();
    }
}

QPixmap QgsSymbologyUtils::brushStyle2Pixmap(Qt::BrushStyle brushstyle)
{
  switch (brushstyle)
    {
      case (Qt::SolidPattern):
        return QPixmap(solidData);
        break;
      case (Qt::Dense1Pattern):
        return QPixmap(dense1Data);
        break;
      case (Qt::Dense2Pattern):
        return QPixmap(dense2Data);
        break;
      case (Qt::Dense3Pattern):
        return QPixmap(dense3Data);
        break;
      case (Qt::Dense4Pattern):
        return QPixmap(dense4Data);
        break;
      case (Qt::Dense5Pattern):
        return QPixmap(dense5Data);
        break;
      case (Qt::Dense6Pattern):
        return QPixmap(dense6Data);
        break;
      case (Qt::Dense7Pattern):
        return QPixmap(dense7Data);
        break;
      case (Qt::HorPattern):
        return QPixmap(horizontalData);
        break;
      case (Qt::VerPattern):
        return QPixmap(verticalData);
        break;
      case (Qt::CrossPattern):
        return QPixmap(crossData);
        break;
      case (Qt::BDiagPattern):
        return QPixmap(bdiagData);
        break;
      case (Qt::FDiagPattern):
        return QPixmap(fdiagData);
        break;
      case (Qt::DiagCrossPattern):
        return QPixmap(diagCrossData);
        break;
      case (Qt::NoBrush):
        return QPixmap(nobrush);
      default:
        qWarning("Warning, no matching pattern found in QgsSymbologyUtils::brushStyle2Pixmap");
    }

  return QPixmap();             // XXX I hope returning a blank one is ok
}

Generated by  Doxygen 1.6.0   Back to index