pleyo.com

/src/trunk2/BAL/Implementations/Graphics/SDL/BCGraphicsDeviceSDL.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2007 Pleyo.  All rights reserved.
00003  *
00004  * Redistribution and use in source and binary forms, with or without
00005  * modification, are permitted provided that the following conditions
00006  * are met:
00007  *
00008  * 1.  Redistributions of source code must retain the above copyright
00009  *     notice, this list of conditions and the following disclaimer.
00010  * 2.  Redistributions in binary form must reproduce the above copyright
00011  *     notice, this list of conditions and the following disclaimer in the
00012  *     documentation and/or other materials provided with the distribution.
00013  * 3.  Neither the name of Pleyo nor the names of
00014  *     its contributors may be used to endorse or promote products derived
00015  *     from this software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY PLEYO AND ITS CONTRIBUTORS "AS IS" AND ANY
00018  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00020  * DISCLAIMED. IN NO EVENT SHALL PLEYO OR ITS CONTRIBUTORS BE LIABLE FOR ANY
00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00022  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00023  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00024  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00025  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00026  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027  */
00028 
00040 #ifndef BCGRAPHICSDEVICESDL_H
00041 #define BCGRAPHICSDEVICESDL_H
00042 
00043 #include "BIGraphicsDevice.h"
00044 #include "BTWidget.h"
00045 #include <SDL/SDL.h>
00046 #if PLATFORM(MAC)
00047 // SDL on Mac has some tricks with main()
00048 #include "SDL/SDL_main.h"
00049 #endif
00050 
00051 namespace BAL {
00052 
00053 class BCNativeImage;
00054 
00060 class BCGraphicsDeviceSDL : public BIGraphicsDevice {
00061 public:
00062     BCGraphicsDeviceSDL();
00066     virtual void initialize(uint16_t width, uint16_t height, uint8_t depth);
00070     virtual void finalize();
00071     virtual BINativeImage* createNativeImage(const WebCore::IntSize size);    
00072     virtual BINativeImage* createNativeImage(RGBA32Array&, const WebCore::IntSize size);    
00073 
00077     virtual void copy(const BTWidget&, const BINativeImage&, WebCore::IntRect, WebCore::IntPoint, const uint8_t alphaChannel);
00081     virtual void drawArc(const BTWidget&, const IntRect rect, uint16_t startAngle, uint16_t angleSpan, const WebCore::Color);
00085     virtual void drawEllipse(const BTWidget&, WebCore::IntRect, const WebCore::Color);
00089     virtual void drawLine(const BTWidget&, WebCore::IntPoint, WebCore::IntPoint, const WebCore::Color);
00093     virtual void drawRect(const BTWidget&, WebCore::IntRect, const WebCore::Color);
00097     virtual void fillConvexPolygon(const BTWidget&, size_t numPoints, const WebCore::IntPoint*, const WebCore::Color);
00101     virtual void fillRect(const BTWidget&, WebCore::IntRect, const WebCore::Color);
00105     virtual void setClip(const BTWidget&, WebCore::IntRect);
00109     virtual IntRect clip(const BTWidget&);
00113     virtual void stretchBlit(const BTWidget&, const BINativeImage&, WebCore::IntRect src, WebCore::IntRect dst, const uint8_t alphaChannel);
00114     virtual WebCore::IntSize size() const;
00115     virtual void update(const BTWidget&, const WebCore::IntRect);
00116     virtual void clear(const BTWidget&, const WebCore::IntRect);
00117 private:
00118     inline void drawArc(const BTWidget&, const WebCore::Color, int zone, int xc, int yc, float& x0, float& y0, float x1, float y1, bool doSwap = true);
00119     SDL_Surface* applyTransparency(const BINativeImage&, const uint8_t alphaChannel);
00120 
00121     SDL_Surface*        m_screen;
00122 #ifndef NDEBUG
00123     bool                m_layoutTests;
00124 #endif
00125 };
00126 
00127 }
00128 
00129 #endif // BCGRAPHICSDEVICESDL_H
00130 
00131 

Generated on Wed Nov 21 20:04:16 2007 for Origyn Web Browser by Doxygen 1.5.3

pleyo.com
pleyo.com