⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webcoretextrenderer.h

📁 最新Nokia手机浏览器全套源代码完美版。
💻 H
字号:
/*
 * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved.
 * Portions Copyright (c) 2005 Nokia Corporation, Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef __WebCoreTextRenderer_h__
#define __WebCoreTextRenderer_h__

// INCLUDES
#include <gdi.h>

// CONSTANTS

// MACROS

// DATA TYPES

// FUNCTION PROTOTYPES

// FORWARD DECLARATIONS
class TPoint;
class CWebCoreGraphicsContext;
class CFont;

// CLASS DECLARATION


/**
*
*  @lib webcore.lib
*  @since 3.0
*/
class TWebCoreTextStyle
	{
public:

    TWebCoreTextStyle() :
        iLetterSpacing(0),iWordSpacing(0),iPadding(0),iFamilies(0),
        iSmallCaps(EFalse),iRtl(EFalse),iVisuallyOrdered(EFalse),
        iApplyRunRounding(EFalse),iApplyWordRounding(EFalse),iAttemptFontSubstitution(EFalse)
		{
		}

public:
    TRgb iTextColor;
    TRgb iBackgroundColor;
    TInt iLetterSpacing;
    TInt iWordSpacing;
    TInt iPadding;
    TInt iTabWidth;
    TInt iXpos;

    // this is an array of TPtrC's terminated by KNullDesC
    TPtrC *iFamilies;
    TBool iSmallCaps;
    TBool iRtl;
    TBool iVisuallyOrdered;
    TBool iApplyRunRounding;
    TBool iApplyWordRounding;
    TBool iAttemptFontSubstitution;
};

/**
*
*  @lib webcore.lib
*  @since 3.0
*/
class TWebCoreTextRun
	{
	public:
		TWebCoreTextRun(const TText *aCharacters, TUint aLength, TInt aFrom, TInt aTo)
		{
			iCharacters = aCharacters;
			iLength = aLength;
			iFrom = aFrom;
			iTo = aTo;
		}

	public:
	    const TText *iCharacters;
	    TUint iLength;
	    TInt iFrom;
	    TInt iTo;
	};

/**
*
*  @lib webcore.lib
*  @since 3.0
*/
class TWebCoreTextGeometry
	{
	public:
	TWebCoreTextGeometry()
	{
	    iPoint = TPoint(0,0);
	    iSelectionY = 0;
	    iSelectionHeight = 0;
	    iSelectionMinX = 0;
	    iSelectionMaxX = 0;
		iUseFontMetricsForSelectionYAndHeight = 1;
	}

	public:
	    TPoint iPoint;
	    TReal iSelectionY;
	    TReal iSelectionHeight;
	    TReal iSelectionMinX;
	    TReal iSelectionMaxX;
	    TBool iUseFontMetricsForSelectionYAndHeight;
	};

/**
*
*  @lib webcore.lib
*  @since 3.0
*/
class MWebCoreTextRenderer
	{
	public:
	// vertical metrics
	virtual TInt Ascent() = 0;
	virtual TInt Descent() = 0;
	virtual TInt LineSpacing() = 0;
	virtual TInt XHeight() = 0;

	// horizontal metrics
	virtual TInt WidthForRun(const TWebCoreTextRun& aRun,
                                   const TWebCoreTextStyle& aStyle) = 0;

	// drawing
	virtual void DrawRun( CWebCoreGraphicsContext& aGc, const TWebCoreTextRun& aRun,
						 const TWebCoreTextStyle& aStyle,
						 const TWebCoreTextGeometry& aGeometry) = 0;

    virtual void DrawHighlightForRun( CWebCoreGraphicsContext& aGc, const TWebCoreTextRun& aRun,
                                     const TWebCoreTextStyle& aStyle,
									 const TWebCoreTextGeometry& aGeometry) = 0;

    virtual void DrawLineForCharacters( CWebCoreGraphicsContext& aGc, TPoint &aPoint, TInt aYOffset,
									   TInt aWidth, TRgb &aColor) = 0;

	// selection point check
	virtual TInt PointToOffset(const TWebCoreTextRun& aRun,
	                          const TWebCoreTextStyle& aStyle,
	                          TInt aPosition,
	                          TBool aReversed,
	                          TBool aIncludePartialGlyphs) = 0;
    virtual void Ref() = 0;
    virtual void Deref() = 0;
    virtual CFont* Font() = 0;
    virtual TBool IsFontFixedPitch() = 0;
	};

#endif

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -