fontservices/textbase/inc/ShapeImpl.h
author hgs
Mon, 12 Jul 2010 14:38:26 +0800
changeset 45 662fa7de7023
permissions -rw-r--r--
201024_05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
662fa7de7023 201024_05
hgs
parents:
diff changeset
     1
// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
662fa7de7023 201024_05
hgs
parents:
diff changeset
     2
// All rights reserved.
662fa7de7023 201024_05
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
662fa7de7023 201024_05
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
662fa7de7023 201024_05
hgs
parents:
diff changeset
     7
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
     8
// Initial Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    10
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    11
// Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    12
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    13
// Description:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    14
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    15
662fa7de7023 201024_05
hgs
parents:
diff changeset
    16
#ifndef SHAPEIMPL_H_
662fa7de7023 201024_05
hgs
parents:
diff changeset
    17
#define SHAPEIMPL_H_
662fa7de7023 201024_05
hgs
parents:
diff changeset
    18
662fa7de7023 201024_05
hgs
parents:
diff changeset
    19
#include <e32cmn.h>
662fa7de7023 201024_05
hgs
parents:
diff changeset
    20
662fa7de7023 201024_05
hgs
parents:
diff changeset
    21
/**@file
662fa7de7023 201024_05
hgs
parents:
diff changeset
    22
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
    23
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
    24
662fa7de7023 201024_05
hgs
parents:
diff changeset
    25
class CFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    26
class TDesC16;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    27
662fa7de7023 201024_05
hgs
parents:
diff changeset
    28
const TUid KFontGetShaping = {0x10274246};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    29
const TUid KFontDeleteShaping = {0x102744D7};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    30
662fa7de7023 201024_05
hgs
parents:
diff changeset
    31
/** Internal class describing shaping information. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    32
class TShapeHeader
662fa7de7023 201024_05
hgs
parents:
diff changeset
    33
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    34
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    35
	/** Number of glyphs output. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    36
	TInt iGlyphCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    37
	/** Number of characters consumed from the input. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    38
	TInt iCharacterCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    39
	/** Reserved for future expansion. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    40
	TInt iReserved0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    41
	/** Reserved for future expansion. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    42
	TInt iReserved1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    43
	/** The glyph, position and indices data.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    44
662fa7de7023 201024_05
hgs
parents:
diff changeset
    45
	The first iGlyphCount * 4 bytes contain the glyph codes
662fa7de7023 201024_05
hgs
parents:
diff changeset
    46
	as 2-byte values. The next iGlyphCount * 4 + 4 bytes contain the
662fa7de7023 201024_05
hgs
parents:
diff changeset
    47
	positions in which these glyphs are to be drawn, in pixels, taking
662fa7de7023 201024_05
hgs
parents:
diff changeset
    48
	the original pen position as origin, with the x axis going right and
662fa7de7023 201024_05
hgs
parents:
diff changeset
    49
	the y axis going down. The next iGlyphCount * 2 bytes contain the
662fa7de7023 201024_05
hgs
parents:
diff changeset
    50
	indices of the characters in the input string that correspond to the
662fa7de7023 201024_05
hgs
parents:
diff changeset
    51
	glyphs in the output.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    52
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
    53
	The final entry in the position array is the total advance of the text.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    54
662fa7de7023 201024_05
hgs
parents:
diff changeset
    55
	Therefore this buffer is actually iGlyphCount * 10 + 4 bytes long. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    56
	TInt8 iBuffer[1];
662fa7de7023 201024_05
hgs
parents:
diff changeset
    57
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    58
662fa7de7023 201024_05
hgs
parents:
diff changeset
    59
/** For CFont::ExtendedFunctions aParam argument, with KFontGetShaping
662fa7de7023 201024_05
hgs
parents:
diff changeset
    60
function ID. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    61
class TFontShapeFunctionParameters
662fa7de7023 201024_05
hgs
parents:
diff changeset
    62
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    63
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    64
	/** The text, including context. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    65
	const TDesC16* iText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    66
	/** The start of the meat within iText. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    67
	TInt iStart;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    68
	/** The end of the meat within iText. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    69
	TInt iEnd;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    70
	/** Script code. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    71
	TInt iScript;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    72
	/** Language code. 0 for default. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    73
	TInt iLanguage;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    74
	/** Output from the shaper; a TShapeHeader on the shared heap. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    75
	const TShapeHeader* iShapeHeaderOutput;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    76
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    77
662fa7de7023 201024_05
hgs
parents:
diff changeset
    78
/** For CFont::ExtendedFunctions aParam argument, with KFontDeleteShaping
662fa7de7023 201024_05
hgs
parents:
diff changeset
    79
function ID. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    80
class TFontShapeDeleteFunctionParameters
662fa7de7023 201024_05
hgs
parents:
diff changeset
    81
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    82
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    83
	const TShapeHeader* iShapeHeader;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    84
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    85
662fa7de7023 201024_05
hgs
parents:
diff changeset
    86
#endif