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.
|
|
#ifndef __AATEXT_HPP_
#define __AATEXT_HPP_
#define CT_LOOKUP 115
// the max number of foreground virt pixels in a subpixel, 2x X 1y , no filtering
#define CT_SAMPLE_NF 2
// the number of distinct nonfiltered states in a whole pixel = 3 x 3 x 3 = 27
// The indices coming from the rasterizer are in [0,26] range
#define CT_MAX_NF ((CT_SAMPLE_NF+1) * (CT_SAMPLE_NF+1) * (CT_SAMPLE_NF+1))
// the max number of foreground virt pixels in a subpixel AFTER filtering, 6
#define CT_SAMPLE_F 6
// size of the storage table, basically 3^5 = 243.
// The table does filtering and index computation (vector quantization) in one step.
#define CT_STORAGE ((CT_SAMPLE_NF+1) * (CT_SAMPLE_NF+1) * (CT_SAMPLE_NF+1) * (CT_SAMPLE_NF+1) * (CT_SAMPLE_NF+1))
class TextColorGammaTable { public: ARGB argb[256]; ULONG gammaValue;
public: TextColorGammaTable() {}; void CreateTextColorGammaTable(const GpColor * color, ULONG gammaValue, ULONG gsLevel); BYTE GetGammaTableIndexValue(BYTE grayscaleValue, ULONG gsLevel);
inline ARGB GetGammaColorCorrection(BYTE grayscaleValue) { return argb[grayscaleValue]; }
};
class DpOutputAntiAliasSolidColorSpan : public DpOutputSolidColorSpan { public: TextColorGammaTable textColorGammaTable;
public:
DpOutputAntiAliasSolidColorSpan(GpColor &color, DpScanBuffer * scan, ULONG gammaValue, ULONG gsLevel);
virtual GpStatus OutputSpan( INT y, INT xMin, INT xMax ) { return DpOutputSolidColorSpan::OutputSpan(y, xMin, xMax); }
BOOL IsValid() const { return TRUE; } DpScanBuffer* GetScanBuffer(){ return DpOutputSolidColorSpan::Scan; }
inline ARGB GetAASolidColor(ULONG grayscaleValue) { return DpOutputSolidColorSpan::Argb = textColorGammaTable.argb[grayscaleValue]; } };
// This class implements antialiasing for Text brush
class DpOutputAntiAliasBrushOutputSpan : public DpOutputSpan { public: DpOutputSpan * Output; BYTE alphaCoverage;
public:
DpOutputAntiAliasBrushOutputSpan() { // Now we have nothing to do but we should have something to add
// when we start to optimize the code
}
void Init(DpOutputSpan *output) { Output = output; alphaCoverage = 255; }
void SetCoverage(BYTE coverage) { alphaCoverage = coverage; } virtual GpStatus OutputSpan(INT y, INT xMin, INT xMax);
virtual ~DpOutputAntiAliasBrushOutputSpan() {};
virtual BOOL IsValid() const {return TRUE;} virtual GpStatus End() { return Ok; } };
void UpdateLCDOrientation();
#endif // __AATEXT_HPP_
|