www.pudn.com > mmi.rar > BIDIParaRules.c
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* bidipararules.c
*
* Project:
* --------
* Maui_Software
*
* Description:
* ------------
* bidirectional algorithm engine
*
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
*****************************************************************************/
/*
* Copyright Notice
* ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
* Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
* (It is illegal to remove this copyright notice from this software or any
* portion of it)
*/
/**************************************************************
FILENAME : BIDIParaRules.c
PURPOSE : Main functions of Rule L1 to L4 of BIDI Algorithm
REMARKS : nil
AUTHOR : Vijay/Bilal
DATE : Aug-23-2004
**************************************************************/
#include "BidiDef.h"
#include "BidiProt.h"
/* START TARUN PMT 20041015 */
extern U8 input_types[]; /* source array for storing the direction codes of the input string */
extern U8 input_levels[]; /* This global contains all the embedding levels */
extern U8 dest_levels[]; /* destitnation array for processed levels */
extern U8 dest_types[]; /* Destination array for storing the direction codes of the input string */
//END TARUN PMT
//START Added by Yogesh 20050831
#ifdef __BIDI_CONSOLE__
#include "CommonProts.h"
#else /* __BIDI_CONSOLE__ */
#include "Unicodexdcl.h"
#include "DebugInitDef.h"
#endif /* __BIDI_CONSOLE__ */
/* END Added by Yogesh 20050831 */
/*********************************************************************
This function will take the unicode character array as input,
outputs the directional code array and returns the string len.
********************************************************************/
/*****************************************************************************
* FUNCTION
* get_direction_codes
* DESCRIPTION
*
* PARAMETERS
* inputTypes [?]
* inputString [?]
* sLen [IN]
* RETURNS
*
*****************************************************************************/
U16 get_direction_codes(U8 *inputTypes, U8 *inputString, S16 sLen)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S16 iCount = 0;
/* START Added by Yogesh 20050831 */
U16 charInput = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
pfnEncodingSchemeToUnicode((U16*) & charInput, (U8*) (&inputString[iCount * BIDI_ENCODING_LENGTH]));
/* END Added by Yogesh 20050831 */
/* START Added by Yogesh 20041224 */
if (sLen)
//START Changed by Yogesh 20050831
// while( inputString[iCount*BIDI_ENCODING_LENGTH] !=0 && iCount 0) && (presentEmbeddingLevel != MAX_LEVEL_EMBEDDING))
{
stackAboutToFullIndicator--;
}
else
{
stackIndex--;
}
/* pop up the embedding value from the stack */
presentEmbeddingValue = pushedEmbeddingValues[stackIndex];
/* get the overriding status */
presentEmbeddingLevel = presentEmbeddingValue & 0x7f;
} /* if( token == PDF ) */
else
{
if (token == BIDI_B)
{
/* Reset all the variables as 'BIDI_B' is the last token processed */
presentEmbeddingLevel = paraEmbeddingLevel;
presentEmbeddingValue = paraEmbeddingLevel;
stackIndex = 0;
stackAboutToFullIndicator = 0;
pushedEmbeddingValues[iCount] = paraEmbeddingLevel;
} /* if(token==BIDI_B) */
} /* if( token == PDF ) */
}
iCount++;
} /* End of while loop */
}
/*****************************************************************************
* FUNCTION
* set_dest_levels
* DESCRIPTION
*
* PARAMETERS
* nSCount [IN]
* nECount [IN]
* paraEmbedLevel [IN]
* pDestLevels [?]
* RETURNS
* void
*****************************************************************************/
void set_dest_levels(U16 nSCount, U16 nECount, U8 paraEmbedLevel, U8 *pDestLevels)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
// while (startCount<=endCount)
// dest_levels[startCount++] = paraEmbedLevel;
while (nSCount < nECount)
{
pDestLevels[nSCount++] = paraEmbedLevel;
}
}
/*****************************************************************************
* FUNCTION
* copy_direction_codes
* DESCRIPTION
*
* PARAMETERS
* dTypes [?]
* sTypes [?]
* nCount [IN]
* RETURNS
* void
*****************************************************************************/
void copy_direction_codes(U8 *dTypes, U8 *sTypes, U16 nCount)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S16 iCount;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (iCount = 0; iCount < nCount; iCount++)
{
dTypes[iCount] = sTypes[iCount];
}
}