- /*
- * pixels.h
- *
- * Pixel images.
- *
- * Portable Windows Library
- *
- * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.0 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and limitations
- * under the License.
- *
- * The Original Code is Portable Windows Library.
- *
- * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
- *
- * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
- * All Rights Reserved.
- *
- * Contributor(s): ______________________________________.
- *
- * $Log: pixels.h,v $
- * Revision 1.9 1998/11/30 03:00:15 robertj
- * New directory structure
- *
- * Revision 1.8 1998/09/24 03:41:08 robertj
- * Added open software license.
- *
- * Revision 1.7 1996/08/08 10:10:17 robertj
- * Directory structure changes for common files.
- *
- * Revision 1.6 1995/03/12 05:00:15 robertj
- * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code.
- * Used built-in equate for WIN32 API (_WIN32).
- *
- * Revision 1.5 1995/02/05 00:54:22 robertj
- * Removed redundent class declaration.
- *
- * Revision 1.4 1994/12/05 11:34:29 robertj
- * Major rewrite of images, pictures and pixmaps.
- * Renamed PPict, PPixels and PImage to make sure all uses are found.
- *
- * Revision 1.3 1994/10/23 05:50:06 robertj
- * Split pixels into subclasses for each pixel size.
- * Moved large slabs to common.
- *
- * Revision 1.2 1994/04/20 12:17:44 robertj
- * assert changes
- *
- * Revision 1.1 1994/04/12 08:21:52 robertj
- * Initial revision
- *
- */
- #ifndef _PPIXELS
- ///////////////////////////////////////////////////////////////////////////////
- // PPixels
- class PCanvas;
- #if defined(_WIN32)
- typedef unsigned char * PPixelDataPtr;
- #else
- typedef unsigned char __huge * PPixelDataPtr;
- #endif
- #include "../../pixels.h"
- public:
- static PPixelImage CreateBitmap(HBITMAP hBm);
- // Create a pixels object from the MS-Windows Device Dependent Bitmap
- virtual HDC CreateImageDC();
- virtual void CloseImageDC(HDC hDC);
- // Support for PMemoryCanvas
- HBITMAP GetHBITMAP(HDC hDC) const;
- // Get the bitmap as an MS-Windows Device Dependent Bitmap
- class DIBInfo {
- public:
- DIBInfo(const PPixelBase & pix, HPALETTE hPal);
- // Create a BITMAPINFO data pointer.
- ~DIBInfo() { free(info); }
- int Width() const { return (int)info->bmiHeader.biWidth; }
- int Height() const { return (int)info->bmiHeader.biHeight; }
- UINT Usage() const { return colourUse; }
- operator BITMAPINFO *() const { return info; }
- operator BITMAPINFOHEADER *() const { return &info->bmiHeader; }
- private:
- BITMAPINFO * info;
- UINT colourUse;
- };
- friend class DIBInfo;
- protected:
- // Member variables
- BITMAPINFOHEADER info;
- // MS-Windows Device Independent Bitmap header info
- HBITMAP hBitmap;
- // MS-Windows Device Dependent Bitmap for interaction with PMemoryCanvas.
- };
- #endif