Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/**************************************************************************\
* * Copyright (c) 1999-2000 Microsoft Corporation * * Module Name: * * Scan operations * * Abstract: * * Public scan-operation definitions (in the ScanOperation namespace). * See Gdiplus\Specs\ScanOperation.doc for an overview. * * Created: * * 07/16/1999 agodfrey * \**************************************************************************/
#ifndef _SCANOPERATION_HPP
#define _SCANOPERATION_HPP
#include "palettemap.hpp"
namespace ScanOperation { // OtherParams:
// If a scan operation needs extra information about how to perform
// an operation, it is passed in the OtherParams structure.
struct OtherParams { const ColorPalette* Srcpal; // source palette
const ColorPalette* Dstpal; // destination palette
const EpPaletteMap *PaletteMap; // palette translation vector, used when
// halftoning
INT X,Y; // x and y coordinates of the leftmost pixel of the scan.
// Used when halftoning/dithering
BOOL DoingDither; // dithering enabled (for 16bpp)
BYTE *CTBuffer; // ClearType coverage buffer, used for ClearType
// scan types.
ARGB SolidColor; // Solid fill color, used in the OpaqueSolidFill and
// CTSolidFill scan types.
ULONG TextContrast; // Text contrast value for blending, used in CTFill and CTSolidFill types
// blendingScan: Used in the RMW optimization (see ReadRMW and
// WriteRMW). Can be in either ARGB or ARGB64 format.
const void *BlendingScan;
void *TempBuffers[3]; }; /**************************************************************************\
* * Operation Description: * * ScanOpFunc is the signature of every Scan Operation. * * Arguments: * * dst - The destination scan * src - The source scan * count - The length of the scan, in pixels * otherParams - Additional data. * * Return Value: * * None * * Notes: * * The formats of the destination and source depend on the specific * scan operation. * * dst and src must point to non-overlapping buffers. The one exception * is that they may be equal, but some scan operations don't allow this * (most notably, those which deal with different-sized source and * destination formats.) * * If you know which operations you're going to be invoking, you can * omit to set fields in otherParams, trusting that they won't be * used. This can be error-prone, which is why we try to limit * the code which uses scan operations directly. * As an example, if you know you're not going to deal with palettized * formats, you don't need to set up Srcpal, Dstpal or PaletteMap. * \**************************************************************************/
// The common scan operation function signature
typedef VOID (FASTCALL *ScanOpFunc)( VOID *dst, const VOID *src, INT count, const OtherParams *otherParams ); };
#endif
|