Main Page | Class Hierarchy | Class List | Directories | File List

ViewportGL.h

00001 #ifndef __VIEWPORT_GL__
00002 #define __VIEWPORT_GL__
00003 
00004 #include <QDomDocument>
00005 #include <QDomElement>
00006 
00007 namespace apig {
00008 
00012     class ViewportGL {
00013         public:
00014             ViewportGL();   // prend la valeur du viewport du contexte OpenGL courant --> précondition : contexte OpenGL créé
00015             ViewportGL(int x, int y, int w, int h) : x(x), y(y), w(w), h(h) {}
00016             
00017             void getGL();           // actualise les paramètres du viewport à partir de l'état OpenGL
00018             void setGL() const;     // actualise l'état OpenGL à partir des paramètres du viewport
00019     
00020             ViewportGL subViewport(int wSub, int hSub);             // retourne le sous-viewport centré de taille (wSub, hSub)
00021             ViewportGL subViewport(int margin, float ratio);        // retourne le sous-viewport centré avec une marge 'margin' et le rapport wSub/hSub = ratio
00022             ViewportGL subViewport(int margin);                     // retourne le sous-viewport une marge 'margin' aux quatre bords
00023     
00024             ViewportGL subViewport(ViewportGL relativeView) const;
00025             ViewportGL relativeViewport(ViewportGL view) const;
00026             
00027             void setUnitSquare(ViewportGL subView) const;   // règle la PROJECTION matrix pour que le carré unité se mappe sur 'subView'.
00028             
00029             void pushScreenMatrices() const;
00030             void popScreenMatrices() const;
00031             
00032             void drawScreenQuad(bool filled = true, float z = 0) const;    // z en coordonnées écran (dans [-1,1])
00033             
00034             // rapport hauteur / largeur du viewport :
00035             float ratio() const { return float(h) / float(w); }
00036             
00037             // ces méthodes servent à passer dans un repère 2D orthonormé contenant [xmin,xmax]*[ymin,ymax] :
00038             static void pushFrame2D(float xmin, float xmax, float ymin, float ymax);
00039             static void popFrame2D();
00040             
00041             static void push(); // met le viewport courant sur la pile d'attributs OpenGL
00042             static void pop();  // enleve le viewport de la pile d'attributs OpenGL
00043             
00044             QDomElement domElement(const QString &name, QDomDocument &document) const;
00045             void initFromDOMElement(const QDomElement &element);
00046             
00047         public:
00048             int x, y, w, h;
00049         };
00050     
00051     }
00052 
00053 #endif
00054 

Generated on Fri Nov 14 20:49:47 2008 for Api Graphics by  doxygen 1.4.4