CrystalSpace

Public API Reference

ivideo/graph2d.h
Go to the documentation of this file.
00001 /*
00002     Copyright (C) 2001 by Jorrit Tyberghein
00003     Copyright (C) 1998-2000 by Andrew Zabolotny <bit@eltech.ru>
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 */
00019 
00020 #ifndef __CS_IVIDEO_GRAPH2D_H__
00021 #define __CS_IVIDEO_GRAPH2D_H__
00022 
00031 #include "csutil/scf.h"
00032 #include "csgfx/rgbpixel.h"
00033 #include "ivideo/cursor.h"
00034 
00035 
00036 struct iImage;
00037 struct iFontServer;
00038 struct iFont;
00039 struct iNativeWindow;
00040 struct iGraphics2D;
00041 
00042 class csRect;
00043 class csVector3;
00044 
00045 namespace CS {
00046 namespace Math {
00047 class Matrix4;
00048 } // namespace Math
00049 } // namespace CS
00050 
00052 enum
00053 {
00058   CS_WRITE_BASELINE    = (1 << 0),
00062   CS_WRITE_NOANTIALIAS = (1 << 1)
00063 };
00064 
00066 struct csPixelCoord
00067 {
00069   int x;
00071   int y;
00072 };
00073 
00094 struct iGraphics2D : public virtual iBase
00095 {
00096   SCF_INTERFACE (iGraphics2D, 4, 0, 2);
00097   
00099   virtual bool Open () = 0;
00100 
00102   virtual void Close () = 0;
00103 
00105   virtual int GetWidth () = 0;
00106 
00108   virtual int GetHeight () = 0;
00109   
00111   virtual int GetColorDepth () = 0;
00112 
00118   virtual int FindRGB (int r, int g, int b, int a = 255) = 0;
00119 
00123   virtual void GetRGB (int color, int& r, int& g, int& b) = 0;
00127   virtual void GetRGB (int color, int& r, int& g, int& b, int& a) = 0;
00128   
00134   virtual void SetClipRect (int nMinX, int nMinY, int nMaxX, int nMaxY) = 0;
00135 
00137   virtual void GetClipRect(int& nMinX, int& nMinY, int& nMaxX, int& nMaxY) = 0;
00138 
00143   virtual bool BeginDraw () = 0;
00144 
00146   virtual void FinishDraw () = 0;
00147 
00153   virtual void Print (csRect const* pArea) = 0;
00154 
00156   virtual void Clear (int color) = 0;
00157 
00159   virtual void ClearAll (int color) = 0;
00160 
00162   virtual void DrawLine(float x1, float y1, float x2, float y2, int color) = 0;
00163 
00165   virtual void DrawBox (int x, int y, int w, int h, int color) = 0;
00166 
00171   virtual bool ClipLine (float& x1, float& y1, float& x2, float& y2,
00172     int xmin, int ymin, int xmax, int ymax) = 0;
00173 
00175   virtual void DrawPixel (int x, int y, int color) = 0;
00176 
00178   virtual void DrawPixels(csPixelCoord const* pixels, int num_pixels,
00179      int color) = 0;
00180 
00182   virtual void Blit (int x, int y, int width, int height,
00183     unsigned char const* data) = 0;
00184 
00186   virtual void GetPixel (int x, int y, uint8 &oR, uint8 &oG, uint8 &oB) = 0;
00188   virtual void GetPixel (int x, int y, uint8 &oR, uint8 &oG, uint8 &oB,
00189         uint8 &oA) = 0;
00190 
00199   virtual void Write (iFont *font, int x, int y, int fg, int bg,
00200     const char *str, uint flags = 0) = 0;
00201 
00202 
00204   virtual void AllowResize (bool iAllow) = 0;
00205 
00207   virtual bool Resize (int w, int h) = 0;
00208 
00210   virtual iFontServer *GetFontServer () = 0;
00211 
00219   virtual bool PerformExtension (char const* command, ...) = 0;
00220 
00226   virtual bool PerformExtensionV (char const* command, va_list) = 0;
00227 
00229   virtual csPtr<iImage> ScreenShot () = 0;
00230 
00235   virtual iNativeWindow* GetNativeWindow () = 0;
00236 
00238   virtual bool GetFullScreen () = 0;
00239 
00243   virtual void SetFullScreen (bool b) = 0;
00244 
00246   virtual bool SetMousePosition (int x, int y) = 0;
00247 
00256   virtual bool SetMouseCursor (csMouseCursorID iShape) = 0;
00257 
00276   virtual bool SetMouseCursor (iImage *image, const csRGBcolor* keycolor = 0, 
00277                                int hotspot_x = 0, int hotspot_y = 0,
00278                                csRGBcolor fg = csRGBcolor(255,255,255),
00279                                csRGBcolor bg = csRGBcolor(0,0,0)) = 0;
00280 
00286   virtual bool SetGamma (float gamma) = 0;
00287 
00291   virtual float GetGamma () const = 0;
00292 
00296   virtual const char* GetName () const = 0;
00297 
00305   virtual void Write (iFont *font, int x, int y, int fg, int bg,
00306     const wchar_t* str, uint flags = 0) = 0;
00307 
00315   virtual void SetViewport (int left, int top, int width, int height) = 0;
00317   virtual void GetViewport (int& left, int& top, int& width, int& height) = 0;
00318   
00320   virtual void GetFramebufferDimensions (int& width, int& height) = 0;
00321   
00323   virtual const char* GetHWRenderer () = 0;
00325   virtual const char* GetHWGLVersion () = 0;
00327   virtual const char* GetHWVendor () = 0;
00328 
00341   virtual void DrawLineProjected (const csVector3& v1, const csVector3& v2,
00342     float fov, int color) = 0;
00343 
00352   virtual void DrawLineProjected (const csVector3& v1, const csVector3& v2,
00353     const CS::Math::Matrix4& projection, int color) = 0;
00354 };
00355 
00358 #endif // __CS_IVIDEO_GRAPH2D_H__
00359 

Generated for Crystal Space 2.0 by doxygen 1.7.6.1