diff options
Diffstat (limited to 'source/blender/img/intern')
-rw-r--r-- | source/blender/img/intern/IMG_Api.cpp | 167 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_BrushRGBA32.cpp | 132 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_BrushRGBA32.h | 134 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_CanvasRGBA32.cpp | 337 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_CanvasRGBA32.h | 102 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Color.h | 150 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Line.cpp | 37 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Line.h | 142 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_MemPtr.h | 115 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Pixmap.cpp | 60 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Pixmap.h | 187 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_PixmapRGBA32.cpp | 332 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_PixmapRGBA32.h | 267 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Rect.cpp | 132 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Rect.h | 201 | ||||
-rw-r--r-- | source/blender/img/intern/IMG_Types.h | 49 | ||||
-rw-r--r-- | source/blender/img/intern/Makefile | 49 |
17 files changed, 0 insertions, 2593 deletions
diff --git a/source/blender/img/intern/IMG_Api.cpp b/source/blender/img/intern/IMG_Api.cpp deleted file mode 100644 index e59d5bfa586..00000000000 --- a/source/blender/img/intern/IMG_Api.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ -#include "../IMG_Api.h" -#include "IMG_BrushRGBA32.h" -#include "IMG_CanvasRGBA32.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -IMG_BrushPtr IMG_BrushCreate(unsigned int w, unsigned int h, float *rgba) -{ - IMG_BrushPtr brush = 0; - try { - IMG_ColorRGB c (rgba[0], rgba[1], rgba[2]); - brush = new IMG_BrushRGBA32 (w, h, c, rgba[3]); - } - catch (...) { - brush = 0; - } - return brush; -} - -void IMG_BrushDispose(IMG_BrushPtr brush) -{ - if (brush) { - delete ((IMG_BrushRGBA32*)brush); - brush = 0; - } -} - -void IMG_BrushSetInnerRaduisRatio(IMG_BrushPtr brush,float aspect) -{ - if (brush) { - TUns32 he = ((IMG_BrushRGBA32*)brush)->getHeight(); - TUns32 we = ((IMG_BrushRGBA32*)brush)->getWidth(); - TUns32 si = we; - if (he > si) si = we; - he = si/2; - we = (TUns32)(aspect*si/2); -// if (we < 2) we = 2; - - - ((IMG_BrushRGBA32*)brush)->setRadii(we,he); - } -} - -IMG_CanvasPtr IMG_CanvasCreate(unsigned int w, unsigned int h) -{ - IMG_CanvasPtr canvas = 0; - try { - canvas = new IMG_CanvasRGBA32 (w, h); - } - catch (...) { - canvas = 0; - } - return canvas; -} - -IMG_CanvasPtr IMG_CanvasCreateFromPtr(void* imagePtr, unsigned int w, unsigned int h, size_t rowBytes) -{ - IMG_CanvasPtr canvas = 0; - try { - canvas = new IMG_CanvasRGBA32 (imagePtr, w, h, rowBytes); - } - catch (...) { - canvas = 0; - } - return canvas; -} - -void IMG_CanvasDispose(IMG_CanvasPtr canvas) -{ - if (canvas) { - delete ((IMG_CanvasRGBA32*)canvas); - canvas = 0; - } -} - -#if 0 -void IMG_CanvasDraw(IMG_CanvasPtr canvas, IMG_BrushPtr brush, unsigned int x, unsigned int y) -{ - if (!(canvas && brush)) return; - ((IMG_CanvasRGBA32*)canvas)->blendPixmap((TUns32)x, (TUns32)y, *((IMG_BrushRGBA32*)brush)); -} - - -void IMG_CanvasDrawUV(IMG_CanvasPtr canvas, IMG_BrushPtr brush, float u, float v) -{ - if (!(canvas && brush)) return; - ((IMG_CanvasRGBA32*)canvas)->blendPixmap(u, v, *((IMG_BrushRGBA32*)brush)); -} -#endif - - -void IMG_CanvasDrawLine(IMG_CanvasPtr canvas, IMG_BrushPtr brush, unsigned int xStart, unsigned int yStart, unsigned int xEnd, unsigned int yEnd) -{ - if (!(canvas && brush)) return; - ((IMG_CanvasRGBA32*)canvas)->blendPixmap((TUns32)xStart, (TUns32)yStart, (TUns32)xEnd, (TUns32)yEnd, *((IMG_BrushRGBA32*)brush)); -} - - -void IMG_CanvasDrawLineUV(IMG_CanvasPtr canvas, IMG_BrushPtr brush, float uStart, float vStart, float uEnd, float vEnd) -{ - if (!(canvas && brush)) return; - ((IMG_CanvasRGBA32*)canvas)->blendPixmap(uStart, vStart, uEnd, vEnd, *((IMG_BrushRGBA32*)brush)); -} - -void IMG_CanvasDrawLineUVEX(IMG_CanvasPtr canvas, IMG_BrushPtr brush, float uStart, float vStart, float uEnd, float vEnd, int torus) -{ - if (!(canvas && brush)) return; - ((IMG_CanvasRGBA32*)canvas)->blendPixmap(uStart, vStart, uEnd, vEnd, *((IMG_BrushRGBA32*)brush), torus); -} - -void IMG_CanvasSoftenAt(IMG_CanvasPtr canvas,float u, float v, unsigned int size,float alpha, float aspect, int torus) -{ - ((IMG_CanvasRGBA32*)canvas)->SoftenAt(u, v, (TUns32)size, alpha, aspect, torus); -} - -void IMG_CanvasFill(IMG_CanvasPtr canvas, float *rgba) -{ - IMG_ColorRGB c (rgba[0], rgba[1], rgba[2]); - IMG_Rect R (0, 0, ((IMG_CanvasRGBA32*)canvas)->getWidth(), - ((IMG_CanvasRGBA32*)canvas)->getHeight()); // Bounds of this pixmap - ((IMG_CanvasRGBA32*)canvas)->fillRect(R, c); -} - -void IMG_CanvasSmear(IMG_CanvasPtr canvas,float uStart, float vStart, float uEnd, float vEnd, unsigned int size, float alpha, float aspect, int torus) -{ - ((IMG_CanvasRGBA32*)canvas)->Smear(uStart, vStart, uEnd, vEnd, size, alpha, aspect, torus); - -} - -void IMG_CanvasCloneAt(IMG_CanvasPtr canvas,IMG_CanvasPtr other,float u,float v,float cu,float cv,int size,float alpha,float aspect) -{ - ((IMG_CanvasRGBA32*)canvas)->CloneAt((IMG_CanvasRGBA32*)other, u, v, cu, cv, size, alpha, aspect); -} - diff --git a/source/blender/img/intern/IMG_BrushRGBA32.cpp b/source/blender/img/intern/IMG_BrushRGBA32.cpp deleted file mode 100644 index 6678365d6da..00000000000 --- a/source/blender/img/intern/IMG_BrushRGBA32.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/** - * $Id$ - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include "IMG_BrushRGBA32.h" -#include <math.h> - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -IMG_BrushRGBA32::IMG_BrushRGBA32(TUns32 w, TUns32 h, const IMG_ColorRGB& c, float a) - : IMG_PixmapRGBA32(w, h), m_color(c), m_alpha(a) -{ - m_ro = w < h ? w/2 : h/2; - m_ri = m_ro >> 1; - updateImage(); -} - - -void IMG_BrushRGBA32::setColor(const IMG_ColorRGB& c) -{ - m_color = c; - updateImage(); -} - - -void IMG_BrushRGBA32::setTransparency(float a) -{ - m_alpha = a; - if (m_alpha > 1.f) m_alpha = 1.f; - if (m_alpha < 0.f) m_alpha = 0.f; - updateImage(); -} - - -void IMG_BrushRGBA32::setRadii(TUns32 rI, TUns32 rO) -{ - m_ri = rI; - m_ro = rO; - - TUns32 w_2 = m_width >> 1; - TUns32 h_2 = m_height >> 1; - - /* - * Make the brush size smaller than half of the minimum - * width or height of the pixmap. Make sure that inner - * radius <= outer radius. - */ - if (m_ro > w_2) m_ro = w_2; - if (m_ro > h_2) m_ro = h_2; - if (m_ri > m_ro) m_ri = m_ro; - - updateImage(); -} - - -void IMG_BrushRGBA32::updateImage() -{ - float fcx = m_width / 2.0f; - float fcy = m_height/ 2.0f ; - - - // Prepare pixel values for this pixmap - IMG_ColorRGBA c (m_color.m_r, m_color.m_g, m_color.m_b, 0.f); - TPixelRGBA32 pOut = getPixelValue(c); - c.m_a = m_alpha; - TPixelRGBA32 pIn = getPixelValue(c); - TPixelRGBA32 p = getPixelValue(c); - TUns8* pa = & (((TUns8*)&p)[bi_a]); - - // Set the pixels in the destination rectangle - for (TUns32 y = 0; y < m_height; y++) { - // Park pixel pointer at the start pixels - TPixelPtr desPtr = getPixelPtr(0, y); - for (TUns32 x = 0; x < m_width; x++) { - // Calculate the distance between current pixel and center - float dX = (float)((TInt32)x - fcx); - float dY = (float)((TInt32)y - fcy); - float d = (float) ::sqrt(dX*dX + dY*dY); - float a; - - if (d <= m_ri) { - *desPtr = pIn; - } - else { - if ((d < m_ro) && (m_ri < m_ro)) { - // Calculate alpha, linear - a = (d - m_ri) / (m_ro - m_ri); - // Now: 0 <= a <= 1 - a = (float)::pow(a, 0.5f); - a = (1.f - a) * m_alpha; - // Now: m_alpha <= a <= 1 - // Store pixel - *pa = (TUns8)(a * ((float)0xFF)); - *desPtr = p; - } - else { - *desPtr = pOut; - } - } - desPtr++; - } - } -} diff --git a/source/blender/img/intern/IMG_BrushRGBA32.h b/source/blender/img/intern/IMG_BrushRGBA32.h deleted file mode 100644 index 90d4e124892..00000000000 --- a/source/blender/img/intern/IMG_BrushRGBA32.h +++ /dev/null @@ -1,134 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ -#ifndef _H_IMG_BrushRGBA32 -#define _H_IMG_BrushRGBA32 - -#include "IMG_PixmapRGBA32.h" - -/** - * A brush used for drawing in pixmaps. - * The brush is a pixmap as well. - * Drawing can be implemented by blending the brush into the pixmap. - * - * @author Maarten Gribnau - * @date March 7, 2001 - * @todo Check the algorithm - */ - -class IMG_BrushRGBA32 : public IMG_PixmapRGBA32 { -public: - /** - * Constructs a brush image with the dimensions and color given. - * @param w width of the brush image - * @param h height of the brush image - * @param c color of the brush - * @param a transparency in the center of the brush - */ - IMG_BrushRGBA32(TUns32 w, TUns32 h, const IMG_ColorRGB& c, float a = 0.8f); - - /** - * Sets the color of the brush. - * @param c color of the brush - */ - virtual void setColor(const IMG_ColorRGB& c); - - /** - * Returns the color of the brush. - * @param c color of the brush - */ - inline virtual void getColor(IMG_ColorRGB& c) const; - - /** - * Sets the transparency of the brush. - * @param a transparency of the brush - */ - virtual void setTransparency(float a); - - /** - * Returns the transparency of the brush. - * @param a transparency of the brush - */ - inline virtual float getTransparency() const; - - /** - * Sets the shape of the brush from two radii (inner and outer). - * This creates a brush with alpha==0 inside the inner radius - * and gradually fades to alpha==1 at the outer radius. - * Inner radius should be smaller or equal to the outer radius. - * If not, the outer radius is made equal to the inner radius. - * If the either radius is larger than the bounds of the brush, - * they are clipped. - * @param rI inner radius - * @param rO outer radius - */ - virtual void setRadii(TUns32 rI, TUns32 rO); - - /** - * Returns the radii that determine the shape of the brush. - * @param rI inner radius - * @param rO outer radius - */ - inline virtual void getRadii(TUns32& rI, TUns32& rO) const; - -protected: - /** - * Updates the image of this brush. - * The image is created using the current color, transparency and shape radii. - */ - virtual void updateImage(); - - IMG_ColorRGB m_color; /** The color of the brush */ - float m_alpha; /** The transparency of the brush */ - TUns32 m_ri; /** The inner radius of the brush */ - TUns32 m_ro; /** The outer radius of the brush */ -}; - - -inline void IMG_BrushRGBA32::getRadii(TUns32& rI, TUns32& rO) const -{ - rI = m_ri; - rO = m_ro; -} - -inline float IMG_BrushRGBA32::getTransparency() const -{ - return m_alpha; -} - -inline void IMG_BrushRGBA32::getColor(IMG_ColorRGB& c) const -{ - c = m_color; -} - - -#endif // _H_IMG_BrushRGBA32 - diff --git a/source/blender/img/intern/IMG_CanvasRGBA32.cpp b/source/blender/img/intern/IMG_CanvasRGBA32.cpp deleted file mode 100644 index 6070160d489..00000000000 --- a/source/blender/img/intern/IMG_CanvasRGBA32.cpp +++ /dev/null @@ -1,337 +0,0 @@ -/** - * $Id$ - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include "IMG_CanvasRGBA32.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -IMG_CanvasRGBA32::IMG_CanvasRGBA32(TUns32 width, TUns32 height) - : IMG_PixmapRGBA32(width, height) -{ -} - -IMG_CanvasRGBA32::IMG_CanvasRGBA32(void* image, TUns32 width, TUns32 height, TUns32 rowBytes) - : IMG_PixmapRGBA32(image, width, height, rowBytes) -{ -} - - -void IMG_CanvasRGBA32::blendPixmap( - TUns32 xStart, TUns32 yStart, TUns32 xEnd, TUns32 yEnd, - const IMG_PixmapRGBA32& pixmap, bool torus) -{ - // Determine visibility of the line - IMG_Line l (xStart, yStart, xEnd, yEnd); // Line used for blending - IMG_Rect bnds (0, 0, m_width, m_height); // Bounds of this pixmap - TVisibility v = bnds.getVisibility(l); - if (!torus) { - if (v == kNotVisible) - return; - if (v == kPartiallyVisible) - bnds.clip(l); - } - - float numSteps = (((float)l.getLength()) / ((float)pixmap.getWidth() / 4)); - //numSteps *= 4; - numSteps = numSteps ? numSteps : 1; - float step = 0.f, stepSize = 1.f / ((float)numSteps); - TInt32 x, y; - for (TUns32 s = 0; s < numSteps; s++) { - l.getPoint(step, x, y); - if (torus) - IMG_PixmapRGBA32::blendPixmapTorus((TUns32)x, (TUns32)y, pixmap); - else - IMG_PixmapRGBA32::blendPixmap((TUns32)x, (TUns32)y, pixmap); - step += stepSize; - } -} - - -void IMG_CanvasRGBA32::blendPixmap( - float uStart, float vStart, float uEnd, float vEnd, - const IMG_PixmapRGBA32& pixmap, bool torus) -{ - TUns32 xStart, yStart, xEnd, yEnd; - getPixelAddress(uStart, vStart, xStart, yStart); - getPixelAddress(uEnd, vEnd, xEnd, yEnd); - blendPixmap(xStart, yStart, xEnd, yEnd, pixmap, torus); -} - - -void IMG_CanvasRGBA32::SoftenAt(float u, float v, TUns32 size, float alpha, float aspect, bool torus) -{ - IMG_BrushRGBA32* brush = 0; - int flag=0; - try { - IMG_ColorRGB c (1.0, 1.0, 1.0); - brush = new IMG_BrushRGBA32 (size, size, c, alpha); - } - catch (...) { - /* no brush , no fun ! */ - return; - } - - TUns32 ro,ri; - ro = size/2; - ri = (int)(aspect/2.0f * size); - if (ri > 2 ) ri =2; - if (ri > ro ) ri =ro; - brush->setRadii(ri,ro); - - - TUns32 x, y; - TUns32 xx, yy; - getPixelAddress(u, v, x, y); - xx = x - size/2; - yy = y - size/2; - if(torus) flag = 1; - - /* now modify brush */ - for (int i= 0 ; i<(int)size;i++){ - for (int j= 0 ; j<(int)size;j++){ - - float sR,sG,sB,sA; - float cR,cG,cB=0.0; - - if (torus) - IMG_PixmapRGBA32::getRGBAatTorus(xx+i,yy+j ,&cR,&cG,&cB,0); - else - IMG_PixmapRGBA32::getRGBAat(xx+i,yy+j ,&cR,&cG,&cB,0); - - int ccount = 1; - /* - cR += 7.0*cR; - cG += 7.0*cG; - cB += 7.0*cB; - ccount += 7.0; - */ - -add_if_in(xx+i+1,yy+j+1,cR,cG,cB,ccount,flag); -add_if_in(xx+i+1,yy+j ,cR,cG,cB,ccount,flag); -add_if_in(xx+i+1,yy+j-1,cR,cG,cB,ccount,flag); - -add_if_in(xx+i,yy+j+1,cR,cG,cB,ccount,flag); -add_if_in(xx+i,yy+j-1,cR,cG,cB,ccount,flag); - -add_if_in(xx+i-1,yy+j+1,cR,cG,cB,ccount,flag); -add_if_in(xx+i-1,yy+j ,cR,cG,cB,ccount,flag); -add_if_in(xx+i-1,yy+j-1,cR,cG,cB,ccount,flag); - - - sR =cR*255.0f/ccount; - sG =cG*255.0f/ccount; - sB =cB*255.0f/ccount; - - sA =255.0; - brush->setRGBAat(i,j,&sR,&sG,&sB,NULL); - } - } - - /* apply */ - if (torus) - IMG_PixmapRGBA32::blendPixmapTorus(x, y, *brush); - else - IMG_PixmapRGBA32::blendPixmap(x, y, *brush); - - /* done clean up */ - if (brush) { - delete ((IMG_BrushRGBA32*)brush); - brush = 0; - } -} - - -IMG_BrushRGBA32* IMG_CanvasRGBA32::LiftBrush(TUns32 x, TUns32 y, TUns32 size, float alpha, float aspect, short flags ) -{ - IMG_BrushRGBA32* brush = 0; - float mR,mG,mB=0.0; - try { - IMG_ColorRGB c (1.0, 1.0, 1.0); - brush = new IMG_BrushRGBA32 (size, size, c, alpha); - } - catch (...) { - /* no brush , no fun ! */ - return(NULL); - } - - TUns32 ro,ri; - ro = size/2; - ri = (int)(aspect/2.0f * size); - if (ri > 2 ) ri =2; - if (ri > ro ) ri =ro; - brush->setRadii(ri,ro); - - - TUns32 xx, yy; - xx = x - size/2; - yy = y - size/2; - IMG_PixmapRGBA32::getRGBAat(xx,yy,&mR,&mG,&mB,0); - for (int i= 0 ; i<(int)size;i++){ - for (int j= 0 ; j<(int)size;j++){ - float cR,cG,cB,cA=0.0; - cR = mR; cG = mG; cB = mB; - int res =IMG_PixmapRGBA32::getRGBAat(xx+i,yy+j ,&cR,&cG,&cB,0); - cR *= 255.0f; - cG *= 255.0f; - cB *= 255.0f; - cA *= 0.0; - if (res) - brush->setRGBAat(i,j,&cR,&cG,&cB,NULL); - else - brush->setRGBAat(i,j,&cR,&cG,&cB,&cA); - - } - } - return(brush); -} - -IMG_BrushRGBA32* IMG_CanvasRGBA32::LiftBrush(float u, float v, TUns32 size, float alpha, float aspect, short flags ) -{ - IMG_BrushRGBA32* brush = 0; - float mR,mG,mB=0.0; - try { - IMG_ColorRGB c (1.0, 1.0, 1.0); - brush = new IMG_BrushRGBA32 (size, size, c, alpha); - } - catch (...) { - /* no brush , no fun ! */ - return(NULL); - } - - TUns32 ro,ri; - ro = size/2; - ri = (int)(aspect/2.0f * size); - if (ri > 2 ) ri =2; - if (ri > ro ) ri =ro; - brush->setRadii(ri,ro); - - - TUns32 x, y; - TUns32 xx, yy; - getPixelAddress(u, v, x, y); - xx = x - size/2; - yy = y - size/2; - IMG_PixmapRGBA32::getRGBAat(xx,yy,&mR,&mG,&mB,0); - for (int i= 0 ; i<(int)size;i++){ - for (int j= 0 ; j<(int)size;j++){ - float cR,cG,cB=0.0; - if (flags & 0x1) - IMG_PixmapRGBA32::getRGBAatTorus(xx+i,yy+j ,&cR,&cG,&cB,0); - else { - cR = mR; cG = mG; cB = mB; - IMG_PixmapRGBA32::getRGBAat(xx+i,yy+j ,&cR,&cG,&cB,0); - } - cR *= 255.0f; - cG *= 255.0f; - cB *= 255.0f; - brush->setRGBAat(i,j,&cR,&cG,&cB,NULL); - } - } - return(brush); -} - -void IMG_CanvasRGBA32::Smear(float uStart, float vStart, float uEnd, float vEnd, TUns32 size, float alpha, float aspect, bool torus) -{ - IMG_BrushRGBA32* brush = NULL; - float du,dv; - du = uEnd - uStart; - dv = vEnd - vStart; - - try { - brush = LiftBrush(uStart-du, vStart-dv, size, alpha, aspect, 1); - } - catch (...) { - /* no brush , no fun ! */ - return; - } - - if (brush) { - blendPixmap(uStart, vStart, uEnd, vEnd, *brush, torus); - delete(brush); - } -} - -void IMG_CanvasRGBA32::CloneAt(IMG_CanvasRGBA32* other,float u,float v,float cu,float cv,TUns32 size,float alpha,float aspect) -{ - TUns32 x, y; - TUns32 cx, cy; - TUns32 xx, yy; - getPixelAddress(u, v, x, y); - getPixelAddress(cu, cv, cx, cy); - - xx = (x-cx);// - size/2; - yy = (y-cy);// - size/2; - - if (other == NULL) return; - IMG_BrushRGBA32* brush = NULL; - try { - brush = other->LiftBrush(xx,yy,size,alpha,aspect,1); - } - catch (...) { - /* no brush , no fun ! */ - return; - } - if (brush){ - IMG_PixmapRGBA32::blendPixmap(x, y, *brush); - delete(brush); - } - -} - - - -int IMG_CanvasRGBA32::add_if_in(int x, int y,float &R,float &G,float &B, int &count, short flags) - -{ - float r,g,b= 0.0f; - if ((flags & 0x1) == 0) - { - if (IMG_PixmapRGBA32::getRGBAat(x,y,&r,&g,&b,0)) - { - R += r; - G += g; - B += b; - count++; - } -} - else { - - IMG_PixmapRGBA32::getRGBAatTorus(x,y,&r,&g,&b,0); - R += r; - G += g; - B += b; - count++; - } - - return 1; -} diff --git a/source/blender/img/intern/IMG_CanvasRGBA32.h b/source/blender/img/intern/IMG_CanvasRGBA32.h deleted file mode 100644 index 4c60e3522cc..00000000000 --- a/source/blender/img/intern/IMG_CanvasRGBA32.h +++ /dev/null @@ -1,102 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -#ifndef _H_IMG_CanvasRGBA32 -#define _H_IMG_CanvasRGBA32 - -#include "IMG_PixmapRGBA32.h" -#include "IMG_BrushRGBA32.h" - -/** - * A IMG_PixmapRGBA32 pixmap that allows for drawing with a IMG_BrushRGBA32. - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -class IMG_CanvasRGBA32 : public IMG_PixmapRGBA32 { -public: - int add_if_in(int x, int y, float &R, float &G, float &B, int &count, short flags); - void Smear(float uStart, float vStart, float uEnd, float vEnd ,TUns32 size, float alpha, float aspect, bool torus=false); - IMG_BrushRGBA32* LiftBrush(float u, float v, TUns32 size, float alpha, float aspect, short flags ); - IMG_BrushRGBA32* LiftBrush(TUns32 x, TUns32 y, TUns32 size, float alpha, float aspect, short flags); - void SoftenAt(float u, float v, TUns32 size, float alpha, float aspect, bool torus=false); - void CloneAt(IMG_CanvasRGBA32* other, float u, float v, float cu, float cv, TUns32 size, float alpha, float aspect); - /** - * Constructor. - * @throw <IMG_MemPtr::Size> when an invalid width and/or height is passed. - * @throw <IMG_MemPtr::Memory> when a there is not enough memory to allocate the image. - * @param width the width in pixels of the image. - * @param height the height in pixels of the image. - */ - IMG_CanvasRGBA32(TUns32 width, TUns32 height); - - /** - * Constructor. - * The image data will not be freed upon destruction of this object. - * The owner of this object is reponsible for that. - * @throw <Size> when an invalid width and/or height is passed. - * @param image pointer to the image data. - * @param width the width in pixels of the image. - * @param height the height in pixels of the image. - */ - IMG_CanvasRGBA32(void* image, TUns32 width, TUns32 height, TUns32 rowBytes); - - /** - * Blends a pixmap into this pixmap over a line. - * Repeatedly pastes the given pixmap centered at the given line into this pixmap. - * The alpha information in the given image is used to blend. - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @todo update the drawing algorithm. - * @param x x-coordinate of the center location of the image. - * @param y y-coordinate of the center location of the image. - * @param pixmap the pixmap to blend - */ - virtual void blendPixmap(TUns32 xStart, TUns32 yStart, TUns32 xEnd, TUns32 yEnd, const IMG_PixmapRGBA32& pixmap, bool torus=false); - - /** - * Blends a pixmap into this pixmap over a line in (u,v) coordinates. - * Pastes the given pixmap centered at the given line into this pixmap. - * The alpha information in the given image is used to blend. - * @see IMG_PixmapRGBA32::blendPixmap(TUns32 xStart, TUns32 yStart, TUns32 yStart, TUns32 yEnd, const IMG_PixmapRGBA32& pixmap) - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @param u u-coordinate of the center location of the image. - * @param v v-coordinate of the center location of the image. - * @param pixmap the pixmap to blend - */ - virtual void blendPixmap(float uStart, float vStart, float uEnd, float vEnd, const IMG_PixmapRGBA32& pixmap, bool torus=false); -}; - - -#endif // _H_IMG_CanvasRGBA32 - diff --git a/source/blender/img/intern/IMG_Color.h b/source/blender/img/intern/IMG_Color.h deleted file mode 100644 index 8343f55e4f0..00000000000 --- a/source/blender/img/intern/IMG_Color.h +++ /dev/null @@ -1,150 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 7, 2001 - */ - -#ifndef _H_IMG_Color -#define _H_IMG_Color - -class IMG_ColorRGBA; - -/** - * Implements a color with red, green and blue components. - * Components are stored as floats. - * @author Maarten Gribnau - * @date March 7, 2001 - */ - -class IMG_ColorRGB { -public: - /** - * Constructs a color with the given values. - * @param r requested red component of the color - * @param g requested green component of the color - * @param b requested blue component of the color - */ - IMG_ColorRGB(float r=0, float g=0, float b=0) - : m_r(r), m_g(g), m_b(b) {} - - /** - * Copy constructor. - * @param c the color to copy. - */ - IMG_ColorRGB(const IMG_ColorRGB& c) - : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b) {} - - /** - * Constructs a color without alpha from one with. - * @param c the color to copy. - */ - inline IMG_ColorRGB(const IMG_ColorRGBA& c); - - /** Red component of the color */ - float m_r; - /** Green component of the color */ - float m_g; - /** Blue component of the color */ - float m_b; -}; - - -/** - * Implements a color with red, green, blue and alpha components. - * Components are stored as floats. - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -class IMG_ColorRGBA { -public: - /** - * Constructs a color with the given values. - * @param r requested red component of the color - * @param g requested green component of the color - * @param b requested blue component of the color - * @param a requested alpha component of the color - */ - IMG_ColorRGBA(float r=0, float g=0, float b=0, float a=0) - : m_r(r), m_g(g), m_b(b), m_a(a) {} - - /** - * Copy constructor. - * @param c the color to copy. - */ - IMG_ColorRGBA(const IMG_ColorRGBA& c) - : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b), m_a(c.m_a) {} - - /** - * Constructs a color with alpha from one without. - * @param c the color to copy. - */ - IMG_ColorRGBA(const IMG_ColorRGB& c) - : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b), m_a(0) {} - - /** - * Blends the given color with this color. - * Uses the alpha of the given color for blending. - * The alpha of this color is left untouched. - * @param c the color to blend - */ - inline void blendColor(const IMG_ColorRGBA& c); - - /** Red component of the color */ - float m_r; - /** Green component of the color */ - float m_g; - /** Blue component of the color */ - float m_b; - /** Alpha component of the color */ - float m_a; -}; - -inline IMG_ColorRGB::IMG_ColorRGB(const IMG_ColorRGBA& c) - : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b) {} - -inline void IMG_ColorRGBA::blendColor(const IMG_ColorRGBA& c) -{ - float r1 = 1 - c.m_a; // The reverse of alpha -#if IMG_REVERSED_ALPHA - m_r = c.m_a * m_r + r1 * c.m_r; - m_g = c.m_a * m_g + r1 * c.m_g; - m_b = c.m_a * m_b + r1 * c.m_b; -#else - m_r = r1 * m_r + c.m_a * c.m_r; - m_g = r1 * m_g + c.m_a * c.m_g; - m_b = r1 * m_b + c.m_a * c.m_b; -#endif -} - - -#endif // _H_IMG_Color - diff --git a/source/blender/img/intern/IMG_Line.cpp b/source/blender/img/intern/IMG_Line.cpp deleted file mode 100644 index 4fb4fb83ca4..00000000000 --- a/source/blender/img/intern/IMG_Line.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ -#include "IMG_Line.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - diff --git a/source/blender/img/intern/IMG_Line.h b/source/blender/img/intern/IMG_Line.h deleted file mode 100644 index 0eb4a261d5f..00000000000 --- a/source/blender/img/intern/IMG_Line.h +++ /dev/null @@ -1,142 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 12, 2001 - */ - -#ifndef _H_IMG_Line -#define _H_IMG_Line - -#include "IMG_Types.h" -#include <math.h> - -/** - * A line from a start to an end point. - * Used for drawing lines in images. - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -class IMG_Line { -public: - - /** - * Constructs a line with the given values. - * @param xs start point x-coordinate - * @param ys start point y-coordinate - * @param xe end point x-coordinate - * @param ye end point y-coordinate - */ - IMG_Line(TInt32 xs=0, TInt32 ys=0, TInt32 xe=0, TInt32 ye=0) - : m_xs(xs), m_ys(ys), m_xe(xe), m_ye(ye) {} - - /** - * Copy constructor. - * @param l line to copy - */ - IMG_Line(const IMG_Line& l) - : m_xs(l.m_xs), m_ys(l.m_ys), m_xe(l.m_xe), m_ye(l.m_ye) {} - - /** - * Destructor. - */ - virtual ~IMG_Line() {}; - - /** - * Access to line length. - * @return length of the line. - */ - virtual inline float getLength() const; - - /** - * Sets all members of the line. - * @param xs start point x-coordinate - * @param ys start point y-coordinate - * @param xe end point x-coordinate - * @param ye end point y-coordinate - */ - virtual inline void set(TInt32 xs, TInt32 ys, TInt32 xe, TInt32 ye); - - /** - * Returns whether this line is empty. - * Empty line are lines that have length==0. - * @return boolean value (true==empty line) - */ - virtual inline bool isEmpty() const; - - /** - * Returns point at given value for line parameter. - * Calculates the coordinates of a point on the line. - * @param t line parameter value (0<=t<=1) of the point requested. - * @param x x-coordinate of the point. - * @param y y-coordinate of the point. - */ - virtual inline void getPoint(float t, TInt32& x, TInt32& y) const; - - /** Start point x-coordinate */ - TInt32 m_xs; - /** Start point y-coordinate */ - TInt32 m_ys; - /** End point x-coordinate */ - TInt32 m_xe; - /** End point y-coordinate */ - TInt32 m_ye; -}; - - -inline float IMG_Line::getLength() const -{ - TInt32 dx = m_xe - m_xs; - TInt32 dy = m_ye - m_ys; - return ((float)::sqrt(((float)dx)*dx + ((float)dy)*dy)); -} - - -inline void IMG_Line::set(TInt32 xs, TInt32 ys, TInt32 xe, TInt32 ye) -{ - m_xs = xs; m_ys = ys; m_xe = xe; m_ye = ye; -} - - -inline bool IMG_Line::isEmpty() const -{ - return (getLength() <= 0); -} - - -inline void IMG_Line::getPoint(float t, TInt32& x, TInt32& y) const -{ - x = (TInt32) (((float)m_xs) + (t * (m_xe - m_xs))); - y = (TInt32) (((float)m_ys) + (t * (m_ye - m_ys))); -} - -#endif // _H_IMG_Line - diff --git a/source/blender/img/intern/IMG_MemPtr.h b/source/blender/img/intern/IMG_MemPtr.h deleted file mode 100644 index 772e7aa9886..00000000000 --- a/source/blender/img/intern/IMG_MemPtr.h +++ /dev/null @@ -1,115 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 8, 2001 - */ - -#ifndef _H_IMG_MemPtr -#define _H_IMG_MemPtr - -#include <stddef.h> - -/** - * A memory pointer for memory of any type. - * It can be used to avoid memory leaks when allocating memory in constructors. - * @author Maarten Gribnau - * @date March 8, 2001 - */ - -template <class T> class IMG_MemPtr { -public: - /** Pointer to the memory */ - T* m_p; - bool m_owned; - - /** - * Size exception. - * A size exception is thrown when an invalid width and/or height is passed. - */ - class Size {}; - /** - * Memory exception. - * A size exception is thrown when a there is not enough memory to allocate the image. - */ - class Memory {}; - - /** - * Constructs a memory pointer. - * @param s requested size of the pointer - * @throw <Size> when an invalid width and/or height is passed. - * @throw <Memory> when a there is not enough memory to allocate the image. - */ - IMG_MemPtr(size_t s) - : m_p(0), m_owned(false) - { - if (s > 0) { - m_p = new T[s]; - if (!m_p) { - throw Memory(); - } - m_owned = true; - } - else { - throw Size(); - } - } - - /** - * Constructs a memory pointer from a pointer. - * @param p the pointer - * @param s requested size of the pointer - * @throw <Size> when an invalid width and/or height is passed. - */ - IMG_MemPtr(void* p, size_t s) - : m_p(0), m_owned(false) - { - if (p && (s > 0)) { - m_p = (T*)p; - } - else { - throw Size(); - } - } - - /** - * Destructor. - */ - ~IMG_MemPtr() { if (m_p && m_owned) { delete [] m_p; m_p = 0; } } - - /** - * Access to the memory. - * @return pointer to the memory - */ - operator T*() { return m_p; } -}; - -#endif // _H_IMG_MemPtr - diff --git a/source/blender/img/intern/IMG_Pixmap.cpp b/source/blender/img/intern/IMG_Pixmap.cpp deleted file mode 100644 index dba2fddb4dd..00000000000 --- a/source/blender/img/intern/IMG_Pixmap.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/** - * $Id$ - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include "IMG_Pixmap.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -IMG_Pixmap::IMG_Pixmap() -{ - m_image = 0; - m_width = 0; - m_height = 0; - m_rowBytes = 0; - m_pixelSize = 0; - m_pixelType = kPixelTypeRGB32; -/* -#if OS_MACINTOSH - bitOrder = kQ3EndianBig; - byteOrder = kQ3EndianBig; -#else - bitOrder = kQ3EndianLittle; - byteOrder = kQ3EndianLittle; -#endif -*/ -} - - -IMG_Pixmap::~IMG_Pixmap() -{ -} diff --git a/source/blender/img/intern/IMG_Pixmap.h b/source/blender/img/intern/IMG_Pixmap.h deleted file mode 100644 index bde5b76e9b3..00000000000 --- a/source/blender/img/intern/IMG_Pixmap.h +++ /dev/null @@ -1,187 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -#ifndef _H_IMG_Pixmap -#define _H_IMG_Pixmap - -#include "IMG_Types.h" -#include "IMG_Color.h" -#include "IMG_Rect.h" - - -/** - * Base class for pixmaps. Here a more elaborate description of the IMG_Pixmap class should be written. - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -class IMG_Pixmap { -public: - /** - * The type of pixels. - * The type of pixels that are stored in this pixmap. - */ - typedef enum { - kPixelTypeRGB32 = 0, /**< R:8, G:8, B:8, Ignore:8 */ - kPixelTypeRGBA32 = 1, /**< R:8, G:8, B:8, Alpha:8 */ -// kPixelTypeRGB16 = 2, /**< Ignore:1, R:5, G:5, B:5 */ -// kPixelTypeRGBA16 = 3, /**< Alpha:1, R:5, G:5, B:5 */ -// kPixelTypeRGB16_565 = 4, /**< R:5, G:6, B:5 */ - kPixelTypeRGB24 = 5 /**< R:8, G:8, B:8 */ - } PixelType; - - /** - * Default constructor. - */ - IMG_Pixmap(); - - /** - * Destructor. - */ - virtual ~IMG_Pixmap(); - - /** - * Access to image data - * @return pointer to the image data - */ - inline void* getImage() const; - - /** - * Access to image width. - * @return width of the image - */ - inline TUns32 getWidth() const; - - /** - * Access to image height. - * @return height of the image - */ - inline TUns32 getHeight() const; - - /** - * Returns the bounds of the pixmap in a rectangle. - * @param bounds of the image - */ - inline void getBounds(IMG_Rect& r) const; - - /** - * Access to pixel type. - * @return the pixel type - */ - inline PixelType getPixelType() const; - - /** - * Clamps u, v coordinates between 0 and 1. - * @param u requested u-coordinate - * @param v requested v-coordinate - */ - inline void clampUV(float& u, float& v) const; - - /** - * Converts (u,v) coordinates to pixel addresses. - * Assumes that (u,v) coordinates are in the [0,1] range. - * @param u requested u-coordinate in the image - * @param v requested v-coordinate in the image - * @param x calculated x-coordinate in the image - * @param y calculated y-coordinate in the image - */ - inline void getPixelAddress(float u, float v, TUns32& x, TUns32& y) const; - - /** - * Fills the rectangle given with the color given. - * Performs a bounds check. - * @param r requested bounds rectangle in the image - * @param c color to use - */ - virtual void fillRect(const IMG_Rect& r, const IMG_ColorRGBA& c) = 0; - -protected: - /** Pointer to the image data */ - void* m_image; - /** Width of the image in pixels */ - TUns32 m_width; - /** Height of the image in pixels */ - TUns32 m_height; - /** Number of bytes for one row in the image. */ - TUns32 m_rowBytes; - /** Size in bits for one pixel */ - TUns32 m_pixelSize; - /** Type of pixels in this image. */ - PixelType m_pixelType; -// TQ3Endian m_bitOrder; -// TQ3Endian m_byteOrder; -}; - -inline void* IMG_Pixmap::getImage() const -{ - return m_image; -} - -inline TUns32 IMG_Pixmap::getWidth() const -{ - return m_width; -} - -inline TUns32 IMG_Pixmap::getHeight() const -{ - return m_height; -} - -inline void IMG_Pixmap::getBounds(IMG_Rect& r) const -{ - r.set(0, 0, m_width, m_height); -} - -inline IMG_Pixmap::PixelType IMG_Pixmap::getPixelType() const -{ - return m_pixelType; -} - -inline void IMG_Pixmap::clampUV(float& u, float& v) const -{ - if (u < 0.f) u = 0.f; - if (u > 1.f) u = 1.f; - if (v < 0.f) v = 0.f; - if (v > 1.f) v = 1.f; -} - -inline void IMG_Pixmap::getPixelAddress(float u, float v, TUns32& x, TUns32& y) const -{ - //MAART TEMP! clampUV(u, v); - x = (TUns32)(((float)m_width) * u); - y = (TUns32)(((float)m_height) * v); -} - -#endif // _H_IMG_Pixmap - diff --git a/source/blender/img/intern/IMG_PixmapRGBA32.cpp b/source/blender/img/intern/IMG_PixmapRGBA32.cpp deleted file mode 100644 index 49b9348a4be..00000000000 --- a/source/blender/img/intern/IMG_PixmapRGBA32.cpp +++ /dev/null @@ -1,332 +0,0 @@ -/** - * $Id$ - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include "IMG_PixmapRGBA32.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -IMG_PixmapRGBA32::IMG_PixmapRGBA32(TUns32 width, TUns32 height) - : IMG_Pixmap(), m_mem(width * height) -{ - m_image = m_mem; - m_width = width; - m_height = height; - m_rowBytes = width * sizeof(TPixelRGBA32); - m_pixelSize = 8 * sizeof(TPixelRGBA32); - m_pixelType = kPixelTypeRGBA32; -} - - -IMG_PixmapRGBA32::IMG_PixmapRGBA32(void* image, TUns32 width, TUns32 height, TUns32 rowBytes) - : IMG_Pixmap(), m_mem(image, width * rowBytes) -{ - m_image = m_mem; - m_width = width; - m_height = height; - m_rowBytes = rowBytes; - m_pixelSize = 8 * sizeof(TPixelRGBA32); - m_pixelType = kPixelTypeRGBA32; -} - - -void IMG_PixmapRGBA32::fillRect(const IMG_Rect& r, const IMG_ColorRGB& c) -{ - IMG_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap - IMG_Rect r_bnds (r); // Area to set - - // Determine visibility - TVisibility v = t_bnds.getVisibility(r_bnds); - if (v == kNotVisible) return; - if (v == kPartiallyVisible) { - // Clip the destination rectangle to the bounds of this pixmap - t_bnds.clip(r_bnds); - if (r_bnds.isEmpty()) { - return; - } - } - -#if 0 - // Set new pixels using shifting - // Prepare the pixel value to set - IMG_ColorRGBA ca (c); - TPixelRGBA32 pv = getPixelValue(c); - // Mask off the alpha bits - pv &= 0x00FFFFFF; //0xFFFFFF00; - - // Set the pixels in the destination rectangle - for (TInt32 y = r.m_t; y < r.m_b; y++) { - // Park pixel pointer at the start pixels - TPixelPtr desPtr = getPixelPtr(r_bnds.m_l, y); - for (TInt32 x = r.m_l; x < r.m_r; x++) { - // Set the new pixel value (retain current alpha) - *(desPtr++) = pv | ((*desPtr) & 0xFF000000); //0x000000FF); - } - } -#else - // Set new values using byte indexing - //IMG_ColorRGBA ca (c); - TPixelRGBA32 src = getPixelValue(c); - TPixelPtr desPtr; - TUns8* srcBytes = (TUns8*) &src; - - // Set the pixels in the destination rectangle - for (TInt32 y = r.m_t; y < r.m_b; y++) { - // Park pixel pointer at the start pixels - desPtr = getPixelPtr(r_bnds.m_l, y); - for (TInt32 x = r.m_l; x < r.m_r; x++) { - // Set the new pixel value (retain current alpha) - ((TUns8*)desPtr)[bi_r] = srcBytes[bi_r]; - ((TUns8*)desPtr)[bi_g] = srcBytes[bi_g]; - ((TUns8*)desPtr)[bi_b] = srcBytes[bi_b]; - desPtr++; - } - } -#endif -} - - -void IMG_PixmapRGBA32::fillRect(const IMG_Rect& r, const IMG_ColorRGBA& c) -{ - IMG_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap - IMG_Rect r_bnds (r); // Area to set - - // Determine visibility - TVisibility v = t_bnds.getVisibility(r_bnds); - if (v == kNotVisible) return; - if (v == kPartiallyVisible) { - // Clip the destination rectangle to the bounds of this pixmap - t_bnds.clip(r_bnds); - if (r_bnds.isEmpty()) { - return; - } - } - - // Set the pixels in the destination rectangle - TPixelRGBA32 pixel = getPixelValue(c); - for (TInt32 y = r.m_t; y < r.m_b; y++) { - // Park pixel pointer at the start pixels - TPixelPtr desPtr = getPixelPtr(r_bnds.m_l, y); - for (TInt32 x = r.m_l; x < r.m_r; x++) { - *(desPtr++) = pixel; - } - } -} - - -void IMG_PixmapRGBA32::setPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap, const IMG_Rect& bnds) -{ - IMG_Rect i_bnds (bnds); // Bounds of input pixmap - IMG_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap - IMG_Rect p_bnds (bnds); // Bounds of the paste area - p_bnds.setCenter(x, y); - - // The next check could be removed if the caller is made responsible for handing us non-empty rectangles - if (i_bnds.isEmpty()) { - // Nothing to do - return; - } - - // Determine visibility of the paste area - TVisibility v = t_bnds.getVisibility(p_bnds); - if (v == kNotVisible) return; - if (v == kPartiallyVisible) { - // Clipping is needed - if (p_bnds.m_l < 0) { - i_bnds.m_l += p_bnds.m_l; - p_bnds.m_l = 0; - } - if (p_bnds.m_t < 0) { - i_bnds.m_t += p_bnds.m_t; - p_bnds.m_t = 0; - } - TInt32 d = p_bnds.getWidth(); - if (p_bnds.m_r > d) { - i_bnds.m_t -= d - p_bnds.m_r; - p_bnds.m_t = d; - } - d = p_bnds.getHeight(); - if (p_bnds.m_b > d) { - i_bnds.m_b -= d - p_bnds.m_b; - p_bnds.m_b = d; - } - } - - // Iterate through the rows - for (TInt32 r = 0; r < p_bnds.getHeight(); r++) { - // Park pixel pointers at the start pixels - TPixelPtr srcPtr = getPixelPtr(i_bnds.m_l, i_bnds.m_t + r); - TPixelPtr desPtr = getPixelPtr(p_bnds.m_l, p_bnds.m_t + r); - // Iterate through the columns - for (int c = 0; c < p_bnds.getWidth(); c++) { - *(desPtr++) = *(srcPtr++); - } - } -} - - -void IMG_PixmapRGBA32::blendPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap, const IMG_Rect& bnds) -{ - IMG_Rect i_bnds (bnds); // Bounds of input pixmap - IMG_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap - IMG_Rect p_bnds (bnds); // Bounds of the paste area - p_bnds.setCenter(x, y); - - // The next check could be removed if the caller is made responsible for handing us non-empty rectangles - if (i_bnds.isEmpty()) { - // Nothing to do - return; - } - - // Determine visibility of the paste area - TVisibility v = t_bnds.getVisibility(p_bnds); - if (v == kNotVisible) return; - if (v == kPartiallyVisible) { - // Clipping is needed - if (p_bnds.m_l < 0) { - i_bnds.m_l += -p_bnds.m_l; - p_bnds.m_l = 0; - } - if (p_bnds.m_t < 0) { - i_bnds.m_t += -p_bnds.m_t; - p_bnds.m_t = 0; - } - TInt32 d = t_bnds.getWidth(); - if (p_bnds.m_r > d) { - i_bnds.m_r -= p_bnds.m_r - d; - p_bnds.m_r = d; - } - d = t_bnds.getHeight(); - if (p_bnds.m_b > d) { - i_bnds.m_b -= p_bnds.m_b - d; - p_bnds.m_b = d; - } - } - - IMG_ColorRGBA srcColor; - IMG_ColorRGBA desColor; - - // Iterate through the rows - for (int r = 0; r < p_bnds.getHeight(); r++) { - // Park pixel pointers at the start pixels - TPixelPtr srcPtr = pixmap.getPixelPtr(i_bnds.m_l, i_bnds.m_t + r); - TPixelPtr desPtr = getPixelPtr(p_bnds.m_l, p_bnds.m_t + r); - // Iterate through the columns - for (int c = 0; c < p_bnds.getWidth(); c++) { - // Retrieve colors from source and destination pixmaps - getColor(*srcPtr, srcColor); - getColor(*desPtr, desColor); - // Blend the colors - desColor.blendColor(srcColor); - // Write color back to destination pixmap - *desPtr = getPixelValue(desColor); - srcPtr++; - desPtr++; - } - } -} - - -void IMG_PixmapRGBA32::blendPixmap(float u, float v, const IMG_PixmapRGBA32& pixmap) -{ - TUns32 x, y; - getPixelAddress(u, v, x, y); - blendPixmap(x, y, pixmap); -} - -int IMG_PixmapRGBA32::getRGBAat(TUns32 x, TUns32 y, float *R, float *G, float *B, float *A) const -{ - TPixelPtr srcPtr = 0; - if ((x >= m_width) || (y >= m_height) ) return 0; - srcPtr = getPixelPtr(x,y); - if (srcPtr){ - IMG_ColorRGBA srcColor; - getColor(*srcPtr, srcColor); - if(R) *R = srcColor.m_r; - if(G) *G = srcColor.m_g; - if(B) *B = srcColor.m_b; - if(A) *A = srcColor.m_a; - return 1; - } - return 0; - -} - -int IMG_PixmapRGBA32::getRGBAatTorus(int x, int y, float *R, float *G, float *B, float *A) -{ - x %= m_width; - y %= m_height; - return getRGBAat(x,y,R,G,B,A); -} - -void IMG_PixmapRGBA32::setRGBAat(TUns32 x, TUns32 y, float *R, float *G, float *B, float *A) -{ - TPixelPtr desPtr = 0; - desPtr = getPixelPtr(x,y); - if (desPtr){ - if(R) ((TUns8*)desPtr)[bi_r] = (TUns8)(*R); - if(G) ((TUns8*)desPtr)[bi_g] = (TUns8)(*G); - if(B) ((TUns8*)desPtr)[bi_b] = (TUns8)(*B); - if(A) ((TUns8*)desPtr)[bi_a] = (TUns8)(*A); - - - } - -} - -void IMG_PixmapRGBA32::blendPixmapTorus(TUns32 x, TUns32 y,const IMG_PixmapRGBA32 &pixmap) -{ - float sR,sG,sB,sA, bR,bG,bB,bA; - IMG_Rect bnds; - pixmap.getBounds(bnds); - int ym = bnds.getHeight(); - int xm = bnds.getWidth(); - for (int xa = 0; xa < xm; xa ++) - for (int ya = 0; ya < ym; ya ++){ - int xt = (xa-xm/2 + x) % (m_width ); - int yt = (ya-xm/2 + y) % (m_height); - - getRGBAat(xt,yt,&sR,&sG,&sB,&sA); - - pixmap.getRGBAat(xa,ya,&bR,&bG,&bB,&bA); - - sR = sR*(1-bA) + bR*bA; - sG = sG*(1-bA) + bG*bA; - sB = sB*(1-bA) + bB*bA; - - sR *= 255.0f; - sG *= 255.0f; - sB *= 255.0f; - - setRGBAat(xt,yt,&sR,&sG,&sB,0); - } -} diff --git a/source/blender/img/intern/IMG_PixmapRGBA32.h b/source/blender/img/intern/IMG_PixmapRGBA32.h deleted file mode 100644 index 0c9352c260f..00000000000 --- a/source/blender/img/intern/IMG_PixmapRGBA32.h +++ /dev/null @@ -1,267 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -#ifndef _H_IMG_PixmapRGBA32 -#define _H_IMG_PixmapRGBA32 - -#include "IMG_Pixmap.h" -#include "IMG_MemPtr.h" - -/** - * Pixmap of kPixelTypeRGBA32 type. - * A pixmap with 24 bits per pixel in ABGR format. - * Provides methods to fill rectangular areas in this image with a color. - * Provides methods to paste or blend other pixmaps into this pixmap. - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -class IMG_PixmapRGBA32 : public IMG_Pixmap { -public: - virtual void blendPixmapTorus(TUns32 x, TUns32 y,const IMG_PixmapRGBA32& pixmap); - void setRGBAat(TUns32 x, TUns32 y, float* R, float* G, float* B,float* A); - int getRGBAat(TUns32 x, TUns32 y, float* R, float* G, float* B,float* A) const; - int getRGBAatTorus(int x, int y, float *R, float *G, float *B, float *A); - - /** - * The pixel type in this pixmap. - */ - typedef TUns32 TPixelRGBA32; - - /** The pixel pointer type of this pixmap. */ - typedef TPixelRGBA32* TPixelPtr; - - /** Indices of color component byes within a pixel. */ - typedef enum { - bi_r = 0, - bi_g = 1, - bi_b = 2, - bi_a = 3 - } TPixelIndex; - - /** "Save" memory pointer. */ - IMG_MemPtr<TPixelRGBA32> m_mem; - - /** - * Constructor. - * Creates a new pixmap of the kPixelTypeRGBA32 type with the requested dimensions. - * @throw <IMG_MemPtr::Size> when an invalid width and/or height is passed. - * @throw <IMG_MemPtr::Memory> when a there is not enough memory to allocate the image. - * @param width the width in pixels of the image. - * @param height the height in pixels of the image. - */ - IMG_PixmapRGBA32(TUns32 width, TUns32 height); - - /** - * Constructor. - * Creates a new pixmap of the kPixelTypeRGBA32 from a pointer to image data. - * The image data will not be freed upon destruction of this object. - * The owner of this object is reponsible for that. - * @throw <Size> when an invalid width and/or height is passed. - * @param image pointer to the image data. - * @param width the width in pixels of the image. - * @param height the height in pixels of the image. - */ - IMG_PixmapRGBA32(void* image, TUns32 width, TUns32 height, TUns32 rowBytes); - -#if 0 - /** - * Destructor. - */ - virtual ~IMG_PixmapRGBA32(); -#endif - - /** - * Fills the rectangle given with the color given. - * Retains the alpha values. - * Performs a bounds check. - * @param r requested bounds rectangle in the image - * @param c color to use - */ - virtual void fillRect(const IMG_Rect& r, const IMG_ColorRGB& c); - - /** - * Fills the rectangle given with the color given. - * Sets the alpha values from the color. - * Performs a bounds check. - * @param r requested bounds rectangle in the image - * @param c color to use - */ - virtual void fillRect(const IMG_Rect& r, const IMG_ColorRGBA& c); - - /** - * Pastes a pixmap into this pixmap. - * Pastes the given pixmap centered at the given coordinates into this pixmap. - * Ignores the alpha information, this is pasted too. - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @param x x-coordinate of the center location of the image. - * @param y y-coordinate of the center location of the image. - * @param pixmap the pixmap to paste. - */ - inline virtual void setPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap); - - /** - * Pastes an area in a pixmap into this pixmap. - * Pastes an area of the given pixmap centered at the given coordinates into this pixmap. - * Ignores the alpha information, this is pasted too. - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @param x x-coordinate of the center location of the image. - * @param y y-coordinate of the center location of the image. - * @param pixmap the pixmap to paste. - * @param bnds the bounds of the area of the pixmap to paste. - */ - virtual void setPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap, const IMG_Rect& bnds); - - /** - * Blends a pixmap into this pixmap. - * Blends the given pixmap centered at the given coordinates into this pixmap. - * The alpha information in the given image is used to blend. - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @param x x-coordinate of the center location of the image. - * @param y y-coordinate of the center location of the image. - * @param pixmap the pixmap to blend. - */ - virtual void blendPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap); - - /** - * Blends an area of a pixmap into this pixmap. - * Blends an area of the given pixmap centered at the given coordinates into this pixmap. - * The alpha information in the given image is used to blend. - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @param x x-coordinate of the center location of the image. - * @param y y-coordinate of the center location of the image. - * @param pixmap the pixmap to blend. - * @param bnds the bounds of the area of the pixmap to blend. - */ - virtual void blendPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap, const IMG_Rect& bnds); - - /** - * Blends a pixmap into this pixmap at (u,v) coordinates. - * Pastes the given pixmap centered at the given coordinates into this pixmap. - * The alpha information in the given image is used to blend. - * @see IMG_PixmapRGBA32::blendPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap) - * @todo implement wrapping modes when the pixmap does not fit within the bounds. - * @param u u-coordinate of the center location of the image. - * @param v v-coordinate of the center location of the image. - * @param pixmap the pixmap to blend - */ - virtual void blendPixmap(float u, float v, const IMG_PixmapRGBA32& pixmap); - -protected: - /** - * Returns pointer to the pixel. - * Returns a pointer of TPixelPtr type to the pixel at the requested coordinates. - * Does not perform a bounds check! - * @param x column address of the pixel. - * @param y row address of the pixel. - * @return the pointer calculated. - */ - inline TPixelPtr getPixelPtr(TUns32 x, TUns32 y) const; - - /** - * Returns the pixel value of a color. - * @param c the color to convert - * @return the pixel value calculated - */ - inline TPixelRGBA32 getPixelValue(const IMG_ColorRGBA& c) const; - - /** - * Returns the color of from a pixel value. - * @param p the pixel value - * @param c the color calculated - */ - inline void getColor(TPixelRGBA32 p, IMG_ColorRGBA& c) const; -}; - -inline void IMG_PixmapRGBA32::setPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap) -{ - IMG_Rect bnds; - pixmap.getBounds(bnds); - setPixmap(x, y, pixmap, bnds); -} - -inline void IMG_PixmapRGBA32::blendPixmap(TUns32 x, TUns32 y, const IMG_PixmapRGBA32& pixmap) -{ - IMG_Rect bnds; - pixmap.getBounds(bnds); - blendPixmap(x, y, pixmap, bnds); -} - -inline IMG_PixmapRGBA32::TPixelPtr IMG_PixmapRGBA32::getPixelPtr(TUns32 x, TUns32 y) const -{ - return (TPixelPtr) (((TUns8*)m_image) + (y*m_rowBytes) + (x*4)); -} - - -inline IMG_PixmapRGBA32::TPixelRGBA32 IMG_PixmapRGBA32::getPixelValue(const IMG_ColorRGBA& c) const -{ -#if 0 - // Obtain pixel value through shifting - TPixelRGBA32 p = ((TPixelRGBA32) (((float) 0xFF) * c.m_a)) << 24; - p |= ((TPixelRGBA32) (((float) 0xFF) * c.m_b)) << 16; - p |= ((TPixelRGBA32) (((float) 0xFF) * c.m_g)) << 8; - p |= ((TPixelRGBA32) (((float) 0xFF) * c.m_r)); - return p; -#else - // Obtain pixel value through byte indexing - TPixelRGBA32 pixel; - TUns8* bytes = (TUns8*)&pixel; - bytes[bi_r] = (TUns8)(((float) 0xFF) * c.m_r); - bytes[bi_g] = (TUns8)(((float) 0xFF) * c.m_g); - bytes[bi_b] = (TUns8)(((float) 0xFF) * c.m_b); - bytes[bi_a] = (TUns8)(((float) 0xFF) * c.m_a); - return pixel; -#endif -} - -inline void IMG_PixmapRGBA32::getColor(TPixelRGBA32 p, IMG_ColorRGBA& c) const -{ -#if 0 - // Obtain color value through shifting - c.m_a = ((float) ((p >> 24) & 0x00FF)) / ((float) 0xFF); - c.m_b = ((float) ((p >> 16) & 0x00FF)) / ((float) 0xFF); - c.m_g = ((float) ((p >> 8) & 0x00FF)) / ((float) 0xFF); - c.m_r = ((float) ( p & 0x00FF)) / ((float) 0xFF); -#else - // Obtain color value through byte indexing - TUns8* bytes = (TUns8*)&p; - c.m_r = ((float)bytes[bi_r]) / ((float) 0xFF); - c.m_g = ((float)bytes[bi_g]) / ((float) 0xFF); - c.m_b = ((float)bytes[bi_b]) / ((float) 0xFF); - c.m_a = ((float)bytes[bi_a]) / ((float) 0xFF); -#endif -} - -#endif // _H_IMG_PixmapRGBA32 - diff --git a/source/blender/img/intern/IMG_Rect.cpp b/source/blender/img/intern/IMG_Rect.cpp deleted file mode 100644 index c2e7bfc89c6..00000000000 --- a/source/blender/img/intern/IMG_Rect.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/** - * $Id$ - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include "IMG_Rect.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -TVisibility IMG_Rect::getVisibility(IMG_Rect& r) const -{ - bool lt = isInside(r.m_l, r.m_t); - bool rt = isInside(r.m_r, r.m_t); - bool lb = isInside(r.m_l, r.m_b); - bool rb = isInside(r.m_r, r.m_b); - TVisibility v; - if (lt && rt && lb && rb) { - // All points inside, rectangle is inside this - v = kFullyVisible; - } - else if (!(lt || rt || lb || rb)) { - // None of the points inside - // Check to see whether the rectangle is larger than this one - if ((r.m_l < m_l) && (r.m_t < m_t) && (r.m_r > m_r) && (r.m_b > m_b)) { - v = kPartiallyVisible; - } - else { - v = kNotVisible; - } - } - else { - // Some of the points inside, rectangle is partially inside - v = kPartiallyVisible; - } - return v; -} - -TVisibility IMG_Rect::getVisibility(IMG_Line& l) const -{ - bool s = isInside(l.m_xs, l.m_ys); - bool e = isInside(l.m_xe, l.m_ye); - TVisibility v; - if (s && e) { - v = kFullyVisible; - } - else if (s || e) { - v = kPartiallyVisible; - } - else { - v = kNotVisible; - } - return v; -} - - -void IMG_Rect::setCenter(TInt32 cx, TInt32 cy) -{ - TInt32 offset = cx - (m_l + (m_r - m_l)/2); - m_l += offset; - m_r += offset; - offset = cy - (m_t + (m_b - m_t)/2); - m_t += offset; - m_b += offset; -} - -void IMG_Rect::setCenter(TInt32 cx, TInt32 cy, TInt32 w, TInt32 h) -{ - long w_2, h_2; - - w_2 = w >> 1; - h_2 = h >> 1; - m_l = cx - w_2; - m_t = cy - h_2; - m_r = m_l + w; - m_b = m_t + h; -} - -bool IMG_Rect::clip(IMG_Rect& r) const -{ - bool clipped = false; - if (r.m_l < m_l) { - r.m_l = m_l; - clipped = true; - } - if (r.m_t < m_t) { - r.m_t = m_t; - clipped = true; - } - if (r.m_r > m_r) { - r.m_r = m_r; - clipped = true; - } - if (r.m_b > m_b) { - r.m_b = m_b; - clipped = true; - } - return clipped; -} - -bool IMG_Rect::clip(IMG_Line& l) const -{ - bool clipped = false; - return clipped; -} diff --git a/source/blender/img/intern/IMG_Rect.h b/source/blender/img/intern/IMG_Rect.h deleted file mode 100644 index 980c96f11aa..00000000000 --- a/source/blender/img/intern/IMG_Rect.h +++ /dev/null @@ -1,201 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 7, 2001 - */ - -#ifndef _H_IMG_Rect -#define _H_IMG_Rect - -#include "IMG_Types.h" -#include "IMG_Line.h" - -/** - * Implements rectangle functionality. - * Used for bounds in images. - * The four extreme coordinates are stored as left, top, right and bottom. - * left is assumed to be smaller than or equal to right. - * top is assumed to be smaller than or equal to bottom. - * @author Maarten Gribnau - * @date March 6, 2001 - */ - -class IMG_Rect { -public: - - /** - * Constructs a rectangle with the given values. - * @param l requested left coordinate of the rectangle - * @param t requested top coordinate of the rectangle - * @param r requested right coordinate of the rectangle - * @param b requested bottom coordinate of the rectangle - */ - IMG_Rect(TInt32 l=0, TInt32 t=0, TInt32 r=0, TInt32 b=0) - : m_l(l), m_t(t), m_r(r), m_b(b) {} - - /** - * Copy constructor. - * @param r rectangle to copy - */ - IMG_Rect(const IMG_Rect& r) - : m_l(r.m_l), m_t(r.m_t), m_r(r.m_r), m_b(r.m_b) {} - - /** - * Destructor. - */ - virtual ~IMG_Rect() {}; - - /** - * Access to rectangle width. - * @return width of the rectangle - */ - virtual inline TInt32 getWidth() const; - - /** - * Access to rectangle height. - * @return height of the rectangle - */ - virtual inline TInt32 getHeight() const; - - /** - * Sets all members of the rectangle. - * @param l requested left coordinate of the rectangle - * @param t requested top coordinate of the rectangle - * @param r requested right coordinate of the rectangle - * @param b requested bottom coordinate of the rectangle - */ - virtual inline void set(TInt32 l, TInt32 t, TInt32 r, TInt32 b); - - /** - * Returns whether this rectangle is empty. - * Empty rectangles are rectangles that have width==0 and/or height==0. - * @return boolean value (true==empty rectangle) - */ - virtual inline bool isEmpty() const; - - /** - * Returns whether the point is inside this rectangle. - * Point on the boundary is considered inside. - * @param x x-coordinate of point to test. - * @param y y-coordinate of point to test. - * @return boolean value (true if point is inside). - */ - virtual inline bool isInside(TInt32 x, TInt32 y) const; - - /** - * Returns whether the rectangle is inside this rectangle. - * @param r rectangle to test. - * @return visibility (not, partially or fully visible). - */ - virtual TVisibility getVisibility(IMG_Rect& r) const; - - /** - * Returns whether the line is inside this rectangle. - * @param l line to test. - * @return visibility (not, partially or fully visible). - */ - virtual TVisibility getVisibility(IMG_Line& l) const; - - /** - * Sets rectangle members. - * Sets rectangle members such that it is centered at the given location. - * @param cx requested center x-coordinate of the rectangle - * @param cy requested center y-coordinate of the rectangle - */ - virtual void setCenter(TInt32 cx, TInt32 cy); - - /** - * Sets rectangle members. - * Sets rectangle members such that it is centered at the given location, - * with the width requested. - * @param cx requested center x-coordinate of the rectangle - * @param cy requested center y-coordinate of the rectangle - * @param w requested width of the rectangle - * @param h requested height of the rectangle - */ - virtual void setCenter(TInt32 cx, TInt32 cy, TInt32 w, TInt32 h); - - /** - * Clips a rectangle. - * Updates the rectangle given such that it will fit within this one. - * This can result in an empty rectangle. - * @param r the rectangle to clip - * @return whether clipping has occurred - */ - virtual bool clip(IMG_Rect& r) const; - - /** - * Clips a line. - * Updates the line given such that it will fit within this rectangle. - * This can result in an empty line. - * @param l the line to clip - * @return whether clipping has occurred - */ - virtual bool clip(IMG_Line& l) const; - - /** Left coordinate of the rectangle */ - TInt32 m_l; - /** Top coordinate of the rectangle */ - TInt32 m_t; - /** Right coordinate of the rectangle */ - TInt32 m_r; - /** Bottom coordinate of the rectangle */ - TInt32 m_b; -}; - - -inline TInt32 IMG_Rect::getWidth() const -{ - return m_r - m_l; -} - -inline TInt32 IMG_Rect::getHeight() const -{ - return m_b - m_t; -} - -inline void IMG_Rect::set(TInt32 l, TInt32 t, TInt32 r, TInt32 b) -{ - m_l = l; m_t = t; m_r = r; m_b = b; -} - -inline bool IMG_Rect::isEmpty() const -{ - return (getWidth() == 0) || (getHeight() == 0); -} - -inline bool IMG_Rect::isInside(TInt32 x, TInt32 y) const -{ - return (x >= m_l) && (x <= m_r) && (y >= m_t) && (y <= m_b); -} - -#endif // _H_IMG_Rect - diff --git a/source/blender/img/intern/IMG_Types.h b/source/blender/img/intern/IMG_Types.h deleted file mode 100644 index d4988d39dc6..00000000000 --- a/source/blender/img/intern/IMG_Types.h +++ /dev/null @@ -1,49 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * @author Maarten Gribnau - * @date March 7, 2001 - */ - -#ifndef _H_IMG_Types -#define _H_IMG_Types - -typedef int TInt32; -typedef unsigned char TUns8; -typedef unsigned int TUns32; - -typedef enum { - kNotVisible = 0, - kPartiallyVisible, - kFullyVisible -} TVisibility; - -#endif // _H_IMG_Types - diff --git a/source/blender/img/intern/Makefile b/source/blender/img/intern/Makefile deleted file mode 100644 index b4ccd4b14e9..00000000000 --- a/source/blender/img/intern/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL/BL DUAL LICENSE BLOCK ***** -# -# - -LIBNAME = img -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -ifeq ($(OS),$(findstring $(OS), "beos darwin freebsd linux openbsd solaris windows")) - CFLAGS += -funsigned-char -endif - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# path to SDNA types -CPPFLAGS += -I../../makesdna -# path to our own external headerfiles -CPPFLAGS += -I.. - |