painter.h Source File

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Examples

- File List
- File Members

painter.h
Go to the documentation of this file.

    00001 /**********************************************************************
    00002 painter.h - Abstract base class for rendering
    00003
    00004 Copyright (C) 2009 by Tim Vandermeersch
    00005 Some portions Copyright (C) 2009 by Chris Morley
    00006
    00007 This file is part of the Open Babel project.
    00008 For more information, see <http://openbabel.org/>
    00009
    00010 This program is free software; you can redistribute it and/or modify
    00011 it under the terms of the GNU General Public License as published by
    00012 the Free Software Foundation version 2 of the License.
    00013
    00014 This program is distributed in the hope that it will be useful,
    00015 but WITHOUT ANY WARRANTY; without even the implied warranty of
    00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00017 GNU General Public License for more details.
    00018 ***********************************************************************/
    00019 #ifndef OB_PAINTER_H
    00020 #define OB_PAINTER_H
    00021
    00022 #include <openbabel/babelconfig.h>
    00023 #include <string>
    00024 #include <vector>
    00025 #include <sstream>
    00026 #ifndef OBDEPICT
    00027   #define OBDEPICT
    00028 #endif
    00029
    00030 namespace OpenBabel
    00031 {
    00037   struct OBDEPICT OBColor
    00038   {
    00039     OBColor()
    00040     {
    00041       *this = OBColor(0.0, 0.0, 0.0);
    00042     }
    00043     OBColor(double _red, double _green, double _blue, double _alpha = 1.0) :
    00044         red(_red), green(_green), blue(_blue), alpha(_alpha)
    00045     {
    00046     }
    00047     OBColor(const std::string &color)
    00048     {
    00049       if (color[0]=='#')
    00050       {
    00051         std::stringstream ss(color.substr(1));
    00052         unsigned c;
    00053         ss >> std::hex >> c;
    00054         *this = OBColor((c/0x10000)/256.0, ((c%0x10000)/0x100/256.0), (c%0x100)/256.0);
    00055       }
    00056       if (color == "black")
    00057         *this = OBColor(0.0, 0.0, 0.0);
    00058       else if (color == "white")
    00059         *this = OBColor(1.0, 1.0, 1.0);
    00060       else if (color == "red")
    00061         *this = OBColor(1.0, 0.0, 0.0);
    00062       else if (color == "green")
    00063         *this = OBColor(0.0, 1.0, 0.0);
    00064       else if (color == "blue")
    00065         *this = OBColor(0.0, 0.0, 1.0);
    00066       else if (color == "yellow")
    00067         *this = OBColor(1.0, 1.0, 0.0);
    00068       else if (color == "gray")
    00069         *this = OBColor(0.3, 0.3, 0.3);
    00070       else if (color == "cyan")
    00071         *this = OBColor(1.0, 0.0, 1.0);
    00072       else if (color == "purple")
    00073         *this = OBColor(0.5, 0.0, 0.5);
    00074       else if (color == "teal")
    00075         *this = OBColor(0.0, 0.5, 0.5);
    00076       else if (color == "olive")
    00077         *this = OBColor(0.5, 0.5, 0.0);
    00078       else
    00079         *this = OBColor(0.5, 0.5, 0.5);
    00080     }
    00081
    00082     OBColor(std::vector<double> vec) : red(vec[0]), green(vec[1]), blue(vec[2]), alpha(1.0){}
    00083
    00084     bool operator !=(const OBColor& other)
    00085     {
    00086       return red!=other.red || green!=other.green || blue!=other.blue;
    00087     }
    00088
    00089     double red, green, blue, alpha;
    00090   };
    00091
    00097   struct OBDEPICT OBFontMetrics
    00098   {
    00099     int    fontSize;
    00100     double ascent, descent;
    00101     double width, height;
    00102   };
    00103
    00109   class OBDEPICT OBPainter
    00110   {
    00111     public:
    00115       virtual ~OBPainter() {}
    00116
    00123       virtual void NewCanvas(double width, double height) = 0;
    00129       virtual bool IsGood() const = 0;
    00133       virtual void SetFontFamily(const std::string &fontFamily) = 0;
    00137       virtual void SetFontSize(int pointSize) = 0;
    00141       virtual void SetFillColor(const OBColor &color) = 0;
    00145       virtual void SetPenColor(const OBColor &color) = 0;
    00149       virtual void SetPenWidth(double width) = 0;
    00154       virtual void DrawLine(double x1, double y1, double x2, double y2) = 0;
    00155       virtual void DrawCircle(double x, double y, double r) = 0;
    00162       virtual void DrawPolygon(const std::vector<std::pair<double,double> > &points) = 0;
    00163       virtual void DrawText(double x, double y, const std::string &text) = 0;
    00164       virtual OBFontMetrics GetFontMetrics(const std::string &text) = 0;
    00165   };
    00166
    00167 }
    00168
    00169 #endif
    00170

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines