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) 1998-2000 Microsoft Corporation * * Abstract: * * Contains the definiton of the DpPen structure which stores all of the * state needed by drivers to render with a pen. * * Notes: * * * * Created: * * 12/01/1998 andrewgo * Created it. * 03/24/1999 agodfrey * Moved into separate file. * 12/8/99 bhouse * Major overhaul of DpPen. No longer used as base class of GpPen. * Moved all driver required state into DpPen. Changed to struct. * \**************************************************************************/
#ifndef _DPPEN_HPP
#define _DPPEN_HPP
//--------------------------------------------------------------------------
// Represent pen information
//--------------------------------------------------------------------------
struct DpPen { BOOL IsEqual(const DpPen * pen) const { //!!! what to do about DeviceBrush and DashArray?
BOOL isEqual = Type == pen->Type && Width == pen->Width && Unit == pen->Unit && StartCap == pen->StartCap && EndCap == pen->EndCap && Join == pen->Join && MiterLimit == pen->MiterLimit && PenAlignment == pen->PenAlignment && DashStyle == pen->DashStyle && DashCap == pen->DashCap && DashCount == pen->DashCount && DashOffset == pen->DashOffset;
if(isEqual) { if(CustomStartCap || pen->CustomStartCap) { if(CustomStartCap && pen->CustomStartCap) isEqual = CustomStartCap->IsEqual(pen->CustomStartCap); else isEqual = FALSE; // One of them doesn't have
// a custom cap.
} }
if(isEqual) { if(CustomEndCap || pen->CustomEndCap) { if(CustomEndCap && pen->CustomEndCap) isEqual = CustomEndCap->IsEqual(pen->CustomEndCap); else isEqual = FALSE; // One of them doesn't have
// a custom cap.
} }
return isEqual; }
// Can the path be rendered using our nominal width pen code?
BOOL IsOnePixelWideSolid(const GpMatrix *worldToDevice, REAL dpiX) const; BOOL IsOnePixelWide(const GpMatrix *worldToDevice, REAL dpiX) const;
// See if the pen has a non-identity transform.
BOOL HasTransform() const { return !Xform.IsIdentity(); }
BOOL IsSimple() const { return (!((DashStyle != DashStyleSolid) || (StartCap & LineCapAnchorMask) || (EndCap & LineCapAnchorMask) || (DashCap & LineCapAnchorMask) )); }
BOOL IsCompound() const { return ((CompoundCount > 0) && (CompoundArray != NULL)); }
BOOL IsCenterNoAnchor() const { return (!((StartCap & LineCapAnchorMask) || (EndCap & LineCapAnchorMask) || (DashCap & LineCapAnchorMask) )); }
VOID InitDefaults() { Type = PenTypeSolidColor; Width = 1; Unit = UnitWorld; StartCap = LineCapFlat; EndCap = LineCapFlat; Join = LineJoinMiter; MiterLimit = 10; // PS's default miter limit.
PenAlignment = PenAlignmentCenter; Brush = NULL; DashStyle = DashStyleSolid; DashCap = LineCapFlat; DashCount = 0; DashOffset = 0; DashArray = NULL; CompoundCount = 0; CompoundArray = NULL; CustomStartCap = NULL; CustomEndCap = NULL; }
GpPenType Type;
REAL Width; GpUnit Unit; GpLineCap StartCap; GpLineCap EndCap; GpLineJoin Join; REAL MiterLimit; GpPenAlignment PenAlignment; const DpBrush * Brush; GpMatrix Xform;
GpDashStyle DashStyle; GpLineCap DashCap; // In v2, we should use GpDashCap for this
INT DashCount; REAL DashOffset; REAL* DashArray;
INT CompoundCount; REAL* CompoundArray; DpCustomLineCap* CustomStartCap; DpCustomLineCap* CustomEndCap; };
#endif
|