pixels.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:3k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * pixels.h
  3.  *
  4.  * Pixel images.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: pixels.h,v $
  30.  * Revision 1.9  1998/11/30 03:00:15  robertj
  31.  * New directory structure
  32.  *
  33.  * Revision 1.8  1998/09/24 03:41:08  robertj
  34.  * Added open software license.
  35.  *
  36.  * Revision 1.7  1996/08/08 10:10:17  robertj
  37.  * Directory structure changes for common files.
  38.  *
  39.  * Revision 1.6  1995/03/12 05:00:15  robertj
  40.  * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code.
  41.  * Used built-in equate for WIN32 API (_WIN32).
  42.  *
  43.  * Revision 1.5  1995/02/05  00:54:22  robertj
  44.  * Removed redundent class declaration.
  45.  *
  46.  * Revision 1.4  1994/12/05  11:34:29  robertj
  47.  * Major rewrite of images, pictures and pixmaps.
  48.  * Renamed PPict, PPixels and PImage to make sure all uses are found.
  49.  *
  50.  * Revision 1.3  1994/10/23  05:50:06  robertj
  51.  * Split pixels into subclasses for each pixel size.
  52.  * Moved large slabs to common.
  53.  *
  54.  * Revision 1.2  1994/04/20  12:17:44  robertj
  55.  * assert changes
  56.  *
  57.  * Revision 1.1  1994/04/12  08:21:52  robertj
  58.  * Initial revision
  59.  *
  60.  */
  61. #ifndef _PPIXELS
  62. ///////////////////////////////////////////////////////////////////////////////
  63. // PPixels
  64. class PCanvas;
  65. #if defined(_WIN32)
  66. typedef unsigned char * PPixelDataPtr;
  67. #else
  68. typedef unsigned char __huge * PPixelDataPtr;
  69. #endif
  70. #include "../../pixels.h"
  71.   public:
  72.     static PPixelImage CreateBitmap(HBITMAP hBm);
  73.       // Create a pixels object from the MS-Windows Device Dependent Bitmap
  74.     virtual HDC CreateImageDC();
  75.     virtual void CloseImageDC(HDC hDC);
  76.       // Support for PMemoryCanvas
  77.     HBITMAP GetHBITMAP(HDC hDC) const;
  78.       // Get the bitmap as an MS-Windows Device Dependent Bitmap
  79.     class DIBInfo {
  80.       public:
  81.         DIBInfo(const PPixelBase & pix, HPALETTE hPal);
  82.         // Create a BITMAPINFO data pointer.
  83.         ~DIBInfo() { free(info); }
  84.         int Width() const { return (int)info->bmiHeader.biWidth; }
  85.         int Height() const { return (int)info->bmiHeader.biHeight; }
  86.         UINT Usage() const { return colourUse; }
  87.         operator BITMAPINFO *() const { return info; }
  88.         operator BITMAPINFOHEADER *() const { return &info->bmiHeader; }
  89.       private:
  90.         BITMAPINFO * info;
  91.         UINT         colourUse;
  92.     };
  93.     friend class DIBInfo;
  94.       
  95.   protected:
  96.     // Member variables
  97.     BITMAPINFOHEADER info;
  98.       // MS-Windows Device Independent Bitmap header info
  99.     HBITMAP hBitmap;
  100.       // MS-Windows Device Dependent Bitmap for interaction with PMemoryCanvas.
  101. };
  102. #endif