hilbert.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PAPYRUSHILBERT_H
00021 #define PAPYRUSHILBERT_H
00022
00023 #include <papyrus/polyline.h>
00024
00025 namespace Papyrus
00026 {
00027
00031 class Hilbert : public Polyline
00032 {
00033 protected:
00034
00035 Hilbert ( const Glib::ustring& id, unsigned level, double size, Fill::pointer fill, Stroke::pointer stroke );
00036
00037 public:
00038 typedef PapyrusPointer<Hilbert> pointer;
00039
00040 static pointer create ( unsigned level=0, double size=0, Fill::pointer fill = Fill::pointer(), Stroke::pointer stroke = Stroke::pointer() );
00041
00042 static pointer create ( const Glib::ustring& id, unsigned level=0, double size=0, Fill::pointer fill = Fill::pointer(), Stroke::pointer stroke = Stroke::pointer() );
00043
00044 virtual ~Hilbert();
00045
00046 unsigned level();
00047
00048 void set_level ( unsigned level );
00049
00050 double size();
00051
00052 void set_size ( double size );
00053
00054 PAPYRUS_CLASS_NAME ( "Hilbert Curve" );
00055
00056 PAPYRUS_CLONE_METHOD ( Hilbert );
00057
00058 protected:
00059 unsigned m_level;
00060 double m_size;
00061 double m_lsize;
00062
00063 void create_vertices();
00064
00065 void hilbert_a ( unsigned level );
00066
00067 void hilbert_b ( unsigned level );
00068
00069 void hilbert_c ( unsigned level );
00070
00071 void hilbert_d ( unsigned level );
00072
00073 };
00074
00075 }
00076
00077 #endif