wxMSW update for CW, wxMac updated
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4802 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		
							
								
								
									
										60
									
								
								include/wx/mac/dataform.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								include/wx/mac/dataform.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        os2/dataform.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of the wxDataFormat class
 | 
				
			||||||
 | 
					// Author:      David Webster (lifted from dnd.h)
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     10/21/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1999 David Webster
 | 
				
			||||||
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_OS2_DATAFORM_H
 | 
				
			||||||
 | 
					#define _WX_OS2_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDataFormat
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // the clipboard formats under GDK are GdkAtoms
 | 
				
			||||||
 | 
					    typedef unsigned short NativeFormat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxDataFormat();
 | 
				
			||||||
 | 
					    wxDataFormat(wxDataFormatId vType);
 | 
				
			||||||
 | 
					    wxDataFormat(const wxString& rId);
 | 
				
			||||||
 | 
					    wxDataFormat(const wxChar* pId);
 | 
				
			||||||
 | 
					    wxDataFormat(NativeFormat vFormat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxDataFormat& operator=(NativeFormat vFormat)
 | 
				
			||||||
 | 
					        { SetId(vFormat); return *this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // comparison (must have both versions)
 | 
				
			||||||
 | 
					    bool operator==(NativeFormat vFormat) const
 | 
				
			||||||
 | 
					        { return m_vFormat == (NativeFormat)vFormat; }
 | 
				
			||||||
 | 
					    bool operator!=(NativeFormat vFormat) const
 | 
				
			||||||
 | 
					        { return m_vFormat != (NativeFormat)vFormat; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // explicit and implicit conversions to NativeFormat which is one of
 | 
				
			||||||
 | 
					    // standard data types (implicit conversion is useful for preserving the
 | 
				
			||||||
 | 
					    // compatibility with old code)
 | 
				
			||||||
 | 
					    NativeFormat GetFormatId() const { return m_vFormat; }
 | 
				
			||||||
 | 
					    operator NativeFormat() const { return m_vFormat; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void SetId(NativeFormat vFormat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // string ids are used for custom types - this SetId() must be used for
 | 
				
			||||||
 | 
					    // application-specific formats
 | 
				
			||||||
 | 
					    wxString GetId() const;
 | 
				
			||||||
 | 
					    void SetId(const wxChar* pId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implementation
 | 
				
			||||||
 | 
					    wxDataFormatId GetType() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    wxDataFormatId                  m_vType;
 | 
				
			||||||
 | 
					    NativeFormat                    m_vFormat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void PrepareFormats();
 | 
				
			||||||
 | 
					    void SetType(wxDataFormatId vType);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_GTK_DATAFORM_H
 | 
				
			||||||
							
								
								
									
										32
									
								
								include/wx/mac/dataobj.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								include/wx/mac/dataobj.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        mac/dataobj.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of the wxDataObject
 | 
				
			||||||
 | 
					// Author:      Stefan Csomor (adapted from Robert Roebling's gtk port)
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     10/21/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1998, 1999 Vadim Zeitlin, Robert Roebling
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_MAC_DATAOBJ_H_
 | 
				
			||||||
 | 
					#define _WX_MAC_DATAOBJ_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "dataobj.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDataObject is the same as wxDataObjectBase under wxGTK
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDataObject : public wxDataObjectBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    wxDataObject();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual bool IsSupportedFormat( const wxDataFormat& format, Direction dir = Get ) const;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_MAC_DATAOBJ_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										90
									
								
								include/wx/mac/dataobj2.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								include/wx/mac/dataobj2.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        os2/dataobj2.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of standard wxDataObjectSimple-derived classes
 | 
				
			||||||
 | 
					// Author:      David Webster (adapted from Robert Roebling's gtk port
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     10/21/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1998, 1999 Vadim Zeitlin, Robert Roebling
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_GTK_DATAOBJ2_H_
 | 
				
			||||||
 | 
					#define _WX_GTK_DATAOBJ2_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "dataobj.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxBitmapDataObject is a specialization of wxDataObject for bitmaps
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxBitmapDataObject : public wxBitmapDataObjectBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // ctors
 | 
				
			||||||
 | 
					    wxBitmapDataObject();
 | 
				
			||||||
 | 
					    wxBitmapDataObject(const wxBitmap& bitmap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // destr
 | 
				
			||||||
 | 
					    ~wxBitmapDataObject();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // override base class virtual to update PNG data too
 | 
				
			||||||
 | 
					    virtual void SetBitmap(const wxBitmap& bitmap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
 | 
					    // ----------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual size_t GetDataSize() const { return m_pngSize; }
 | 
				
			||||||
 | 
					    virtual bool GetDataHere(void *buf) const;
 | 
				
			||||||
 | 
					    virtual bool SetData(size_t len, const void *buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    void Init() { m_pngData = (void *)NULL; m_pngSize = 0; }
 | 
				
			||||||
 | 
					    void Clear() { free(m_pngData); }
 | 
				
			||||||
 | 
					    void ClearAll() { Clear(); Init(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    size_t      m_pngSize;
 | 
				
			||||||
 | 
					    void       *m_pngData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void DoConvertToPng();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    // Virtual function hiding supression
 | 
				
			||||||
 | 
					    size_t GetDataSize(const wxDataFormat& rFormat) const
 | 
				
			||||||
 | 
					    { return(wxDataObjectSimple::GetDataSize(rFormat)); }
 | 
				
			||||||
 | 
					    bool GetDataHere(const wxDataFormat& rFormat, void* pBuf) const
 | 
				
			||||||
 | 
					    { return(wxDataObjectSimple::GetDataHere(rFormat, pBuf)); }
 | 
				
			||||||
 | 
					    bool SetData(const wxDataFormat& rFormat, size_t nLen, const void* pBuf)
 | 
				
			||||||
 | 
					    { return(wxDataObjectSimple::SetData(rFormat, nLen, pBuf)); }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxFileDataObject is a specialization of wxDataObject for file names
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFileDataObject : public wxFileDataObjectBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
 | 
					    // ----------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void AddFile( const wxString &filename );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual size_t GetDataSize() const;
 | 
				
			||||||
 | 
					    virtual bool GetDataHere(void *buf) const;
 | 
				
			||||||
 | 
					    virtual bool SetData(size_t len, const void *buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    // Virtual function hiding supression
 | 
				
			||||||
 | 
					    size_t GetDataSize(const wxDataFormat& rFormat) const
 | 
				
			||||||
 | 
					    { return(wxDataObjectSimple::GetDataSize(rFormat)); }
 | 
				
			||||||
 | 
					    bool GetDataHere(const wxDataFormat& rFormat, void* pBuf) const
 | 
				
			||||||
 | 
					    { return(wxDataObjectSimple::GetDataHere(rFormat, pBuf)); }
 | 
				
			||||||
 | 
					    bool SetData(const wxDataFormat& rFormat, size_t nLen, const void* pBuf)
 | 
				
			||||||
 | 
					    { return(wxDataObjectSimple::SetData(rFormat, nLen, pBuf)); }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_GTK_DATAOBJ2_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										37
									
								
								include/wx/mac/pnghand.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								include/wx/mac/pnghand.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        pnghand.h
 | 
				
			||||||
 | 
					// Purpose:     PNG bitmap handler
 | 
				
			||||||
 | 
					// Author:      Julian Smart
 | 
				
			||||||
 | 
					// Modified by: 
 | 
				
			||||||
 | 
					// Created:     04/01/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Microsoft, Julian Smart
 | 
				
			||||||
 | 
					// Licence:   	wxWindows licence
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma interface "pnghand.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_PNGHAND_H_
 | 
				
			||||||
 | 
					#define _WX_PNGHAND_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxPNGFileHandler: public wxBitmapHandler
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  DECLARE_DYNAMIC_CLASS(wxPNGFileHandler)
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  inline wxPNGFileHandler(void)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						m_name = "PNG bitmap file";
 | 
				
			||||||
 | 
						m_extension = "bmp";
 | 
				
			||||||
 | 
						m_type = wxBITMAP_TYPE_PNG;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
 | 
				
			||||||
 | 
					      int desiredWidth, int desiredHeight);
 | 
				
			||||||
 | 
					  virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					  // _WX_PNGHAND_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										290
									
								
								include/wx/mac/pngread.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										290
									
								
								include/wx/mac/pngread.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,290 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * File:	pngread.h
 | 
				
			||||||
 | 
					 * Purpose:	PNG file reader
 | 
				
			||||||
 | 
					 * Author:	Alejandro Aguilar Sierra/Julian Smart
 | 
				
			||||||
 | 
					 * Created:	1995
 | 
				
			||||||
 | 
					 * Copyright:	(c) 1995, Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_PNGREAD__
 | 
				
			||||||
 | 
					#define _WX_PNGREAD__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma interface "pngread.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef byte
 | 
				
			||||||
 | 
					typedef unsigned char byte;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define WXIMA_COLORS DIB_PAL_COLORS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef byte * ImagePointerType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						byte red;
 | 
				
			||||||
 | 
						byte green;
 | 
				
			||||||
 | 
					   byte blue;
 | 
				
			||||||
 | 
					} rgb_color_struct;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define COLORTYPE_PALETTE	1
 | 
				
			||||||
 | 
					#define COLORTYPE_COLOR		2
 | 
				
			||||||
 | 
					#define COLORTYPE_ALPHA		4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxPNGReader
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  int filetype;
 | 
				
			||||||
 | 
					  char filename[255];
 | 
				
			||||||
 | 
					  ImagePointerType RawImage;  		//  Image data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int Width, Height;   		//  Dimensions
 | 
				
			||||||
 | 
					  int Depth;	 				// (bits x pixel)
 | 
				
			||||||
 | 
					  int ColorType;				// Bit 1 = Palette used
 | 
				
			||||||
 | 
														// Bit 2 = Color used
 | 
				
			||||||
 | 
														// Bit 3 = Alpha used
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  long EfeWidth;	 			// Efective Width
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GWorldPtr lpbi;
 | 
				
			||||||
 | 
					  int bgindex;
 | 
				
			||||||
 | 
					  wxPalette* Palette;
 | 
				
			||||||
 | 
					  bool imageOK;
 | 
				
			||||||
 | 
					friend class wxPNGReaderIter;
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  wxPNGReader(void);
 | 
				
			||||||
 | 
					  wxPNGReader (char* ImageFileName);     // Read an image file
 | 
				
			||||||
 | 
					  ~wxPNGReader ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void Create(int width, int height, int deep, int colortype=-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool ReadFile( char* ImageFileName=0 );
 | 
				
			||||||
 | 
					  bool SaveFile( char* ImageFileName=0 );
 | 
				
			||||||
 | 
					  bool SaveXPM(char *filename, char *name = 0);
 | 
				
			||||||
 | 
					  int  GetWidth( void ) const { return Width; };
 | 
				
			||||||
 | 
					  int  GetHeight( void ) const { return Height; };
 | 
				
			||||||
 | 
					  int  GetDepth( void ) const { return Depth; };
 | 
				
			||||||
 | 
					  int  GetColorType( void ) const { return ColorType; };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int  GetIndex(int x, int y);
 | 
				
			||||||
 | 
					  bool GetRGB(int x, int y, byte* r, byte* g, byte* b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool SetIndex(int x, int y, int index);
 | 
				
			||||||
 | 
					  bool SetRGB(int x, int y, byte r, byte g, byte b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // ColorMap settings
 | 
				
			||||||
 | 
					  bool SetPalette(wxPalette* colourmap);
 | 
				
			||||||
 | 
					  bool SetPalette(int n, rgb_color_struct *rgb_struct);
 | 
				
			||||||
 | 
					  bool SetPalette(int n, byte *r, byte *g=0, byte *b=0);
 | 
				
			||||||
 | 
					  wxPalette* GetPalette() const { return Palette; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void NullData();
 | 
				
			||||||
 | 
					  inline int GetBGIndex(void) { return bgindex; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  inline bool Inside(int x, int y)
 | 
				
			||||||
 | 
					      { return (0<=y && y<Height && 0<=x && x<Width); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  virtual wxBitmap *GetBitmap(void);
 | 
				
			||||||
 | 
					  virtual bool InstantiateBitmap(wxBitmap *bitmap);
 | 
				
			||||||
 | 
					  wxMask *CreateMask(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  inline bool Ok(void) { return imageOK; }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxPNGReaderIter
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  int Itx, Ity;				// Counters
 | 
				
			||||||
 | 
					  int Stepx, Stepy;
 | 
				
			||||||
 | 
					  ImagePointerType IterImage;  		//  Image pointer
 | 
				
			||||||
 | 
					  wxPNGReader *ima;
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					// Constructors
 | 
				
			||||||
 | 
					  wxPNGReaderIter ( void );
 | 
				
			||||||
 | 
					  wxPNGReaderIter ( wxPNGReader *imax );
 | 
				
			||||||
 | 
					  operator wxPNGReader* ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Iterators
 | 
				
			||||||
 | 
					  bool ItOK ();
 | 
				
			||||||
 | 
					  void reset ();
 | 
				
			||||||
 | 
					  void upset ();
 | 
				
			||||||
 | 
					  void SetRow(byte *buf, int n);
 | 
				
			||||||
 | 
					  void GetRow(byte *buf, int n);
 | 
				
			||||||
 | 
					  byte GetByte( ) { return IterImage[Itx]; }
 | 
				
			||||||
 | 
					  void SetByte(byte b) { IterImage[Itx] = b; }
 | 
				
			||||||
 | 
					  ImagePointerType GetRow(void);
 | 
				
			||||||
 | 
					  bool NextRow();
 | 
				
			||||||
 | 
					  bool PrevRow();
 | 
				
			||||||
 | 
					  bool NextByte();
 | 
				
			||||||
 | 
					  bool PrevByte();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void SetSteps(int x, int y=0) {  Stepx = x; Stepy = y; }
 | 
				
			||||||
 | 
					  void GetSteps(int *x, int *y) {  *x = Stepx; *y = Stepy; }
 | 
				
			||||||
 | 
					  bool NextStep();
 | 
				
			||||||
 | 
					  bool PrevStep();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					////////////////////////// AD - for interlace ///////////////////////////////
 | 
				
			||||||
 | 
					  void SetY(int y);
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline
 | 
				
			||||||
 | 
					wxPNGReaderIter::wxPNGReaderIter(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  ima = 0;
 | 
				
			||||||
 | 
					  IterImage = 0;
 | 
				
			||||||
 | 
					  Itx = Ity = 0;
 | 
				
			||||||
 | 
					  Stepx = Stepy = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline
 | 
				
			||||||
 | 
					wxPNGReaderIter::wxPNGReaderIter(wxPNGReader *imax): ima(imax)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (ima)
 | 
				
			||||||
 | 
						 IterImage = ima->RawImage;
 | 
				
			||||||
 | 
					  Itx = Ity = 0;
 | 
				
			||||||
 | 
					  Stepx = Stepy = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline
 | 
				
			||||||
 | 
					wxPNGReaderIter::operator wxPNGReader* ()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return ima;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline
 | 
				
			||||||
 | 
					bool wxPNGReaderIter::ItOK ()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (ima)
 | 
				
			||||||
 | 
						 return ima->Inside(Itx, Ity);
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
						 return FALSE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void wxPNGReaderIter::reset()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  IterImage = ima->RawImage;
 | 
				
			||||||
 | 
					  Itx = Ity = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void wxPNGReaderIter::upset()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Itx = 0;
 | 
				
			||||||
 | 
					  Ity = ima->Height-1;
 | 
				
			||||||
 | 
					  IterImage = ima->RawImage + ima->EfeWidth*(ima->Height-1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline bool wxPNGReaderIter::NextRow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (++Ity >= ima->Height) return 0;
 | 
				
			||||||
 | 
					  IterImage += ima->EfeWidth;
 | 
				
			||||||
 | 
					  return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline bool wxPNGReaderIter::PrevRow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (--Ity < 0) return 0;
 | 
				
			||||||
 | 
					  IterImage -= ima->EfeWidth;
 | 
				
			||||||
 | 
					  return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					////////////////////////// AD - for interlace ///////////////////////////////
 | 
				
			||||||
 | 
					inline void wxPNGReaderIter::SetY(int y)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ((y < 0) || (y > ima->Height)) return;
 | 
				
			||||||
 | 
					  Ity = y;
 | 
				
			||||||
 | 
					  IterImage = ima->RawImage + ima->EfeWidth*y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void wxPNGReaderIter::SetRow(byte *buf, int n)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					// Here should be bcopy or memcpy
 | 
				
			||||||
 | 
					  //_fmemcpy(IterImage, (void far *)buf, n);
 | 
				
			||||||
 | 
					  if (n<0)
 | 
				
			||||||
 | 
						 n = ima->GetWidth();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for (int i=0; i<n; i++) IterImage[i] = buf[i];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void wxPNGReaderIter::GetRow(byte *buf, int n)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  for (int i=0; i<n; i++) buf[i] = IterImage[i];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline ImagePointerType wxPNGReaderIter::GetRow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return IterImage;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline bool wxPNGReaderIter::NextByte()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (++Itx < ima->EfeWidth)
 | 
				
			||||||
 | 
						 return 1;
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
						 if (++Ity < ima->Height)
 | 
				
			||||||
 | 
						 {
 | 
				
			||||||
 | 
							IterImage += ima->EfeWidth;
 | 
				
			||||||
 | 
							Itx = 0;
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						 } else
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline bool wxPNGReaderIter::PrevByte()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (--Itx >= 0)
 | 
				
			||||||
 | 
						 return 1;
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
						 if (--Ity >= 0)
 | 
				
			||||||
 | 
						 {
 | 
				
			||||||
 | 
							IterImage -= ima->EfeWidth;
 | 
				
			||||||
 | 
							Itx = 0;
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						 } else
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline bool wxPNGReaderIter::NextStep()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Itx += Stepx;
 | 
				
			||||||
 | 
					  if (Itx < ima->EfeWidth)
 | 
				
			||||||
 | 
						 return 1;
 | 
				
			||||||
 | 
					  else {
 | 
				
			||||||
 | 
						 Ity += Stepy;
 | 
				
			||||||
 | 
						 if (Ity < ima->Height)
 | 
				
			||||||
 | 
						 {
 | 
				
			||||||
 | 
							IterImage += ima->EfeWidth;
 | 
				
			||||||
 | 
							Itx = 0;
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						 } else
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline bool wxPNGReaderIter::PrevStep()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Itx -= Stepx;
 | 
				
			||||||
 | 
					  if (Itx >= 0)
 | 
				
			||||||
 | 
						 return 1;
 | 
				
			||||||
 | 
					  else {       
 | 
				
			||||||
 | 
						 Ity -= Stepy;
 | 
				
			||||||
 | 
						 if (Ity >= 0 && Ity < ima->Height)
 | 
				
			||||||
 | 
						 {
 | 
				
			||||||
 | 
							IterImage -= ima->EfeWidth;
 | 
				
			||||||
 | 
							Itx = 0;
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						 } else
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user