Example #1
0
void ASNLexer::LookupTag(void)
{
    while ( true ) {
        char c = Char();
        switch ( c ) {
        case '\r':
        case '\n':
            LexerWarning("unclosed tag", 11);
            return;
        case 0:
            if ( Eof() ) {
                LexerWarning("unclosed tag", 12);
                return;
            }
            AddChar();
            LexerWarning("illegal character in tag", 13);
            break;
        case ']':
            AddChar();
            return;
        case '0': case '1': case '2': case '3': case '4':
        case '5': case '6': case '7': case '8': case '9':
        // case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
            AddChar();
            break;
        default:
            AddChar();
            LexerWarning("illegal character in tag", 14);
            break;
        }
    }
}
Example #2
0
void CUICustomEdit::AddLetter(char c)
{
	if (m_bNumbersOnly)
	{
		if ((c >= '0' && c<='9'))
			AddChar(c);

		return;
	}
	if(m_bShift)
	{
		switch(c) {
		case '1': c='!';	break;
		case '2': c='@';	break;
		case '3': c='#';	break;
		case '4': c='$';	break;
		case '5': c='%';	break;
		case '6': c='^';	break;
		case '7': c='&';	break;
		case '8': c='*';	break;
		case '9': c='(';	break;
		case '0': c=')';	break;
		default:
			c = c-'a';
			c = c+'A';
		}
	}

	AddChar(c);
}
Example #3
0
PUBLIC char   *AddString(char * String)
{
    NewString();
    while (*String)  {
	AddChar( *String );
	String++;
    }
    AddChar( '\0' );
    return  TopOfTable;
}
Example #4
0
TToken ASNLexer::LookupNumber(void)
{
    while ( IsDigit(Char()) ) {
        AddChar();
    }
    char c = Char();
    if (c == '.' || c == 'e' || c == 'E' || c == '-' || c == '+') {
        AddChar();
        LookupNumber();
        return T_DOUBLE;
    }
    return T_NUMBER;
}
Example #5
0
TToken ASNLexer::LookupBinHexString(void)
{
    TToken token = T_BINARY_STRING;
    while ( true ) {
        char c = Char();
        switch ( c ) {
        case '\r':
        case '\n':
            LexerWarning("unclosed bit string", 5);
            return token;
        case 0:
            if ( Eof() ) {
                LexerWarning("unclosed bit string", 6);
                return token;
            }
            AddChar();
            LexerWarning("illegal character in bit string", 7);
            break;
        case '0':
        case '1':
            AddChar();
            break;
        case '2': case '3': case '4': case '5': case '6': case '7': case '8':
        case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
            AddChar();
            token = T_HEXADECIMAL_STRING;
            break;
        case '\'':
            switch ( Char(1) ) {
            case 'B':
                AddChars(2);
                if ( token != T_BINARY_STRING )
                    LexerWarning("binary string contains hexadecimal digits", 8);
                return T_BINARY_STRING;
            case 'H':
                AddChars(2);
                return T_HEXADECIMAL_STRING;
            default:
                AddChar();
                LexerWarning("unknown type of bit string", 9);
                return token;
            }
        default:
            AddChar();
            LexerWarning("illegal character in bit string", 10);
            break;
        }
    }
}
Example #6
0
void PrintChars(const char* txt, int test)
{
/*  int i;
  int colour;
  sscanf(txt, "%d", &colour);
  unsigned short* ptr = (unsigned short*)g_Screen;
  for (i=0;i<5000;i++)
  {
    *ptr = colour & 0xffff;
    ptr++;
  }
*/
  while (*txt)
  {
    if (test)
    {
      AddChar(*txt);
    } 
    else 
    {
      PutCharOnScreen(*txt);
    }
    
    txt++;
  }
  
  
}
Example #7
0
void CChatMsgBuffer::AddSring(char *txt)
{
	int TextLen = strlen(txt);

	for(int Cpt = 0; Cpt < TextLen; Cpt++)
		AddChar(txt[Cpt]);
}
CString CNumEncoder::EncodeToString()
{
	CString Ret = "";

	for(int i=0; i<m_Numbers.GetSize(); i++)
	{
		CString Temp;
		Temp.Format("%d", m_Numbers[i]);
		AddChar(Ret, (char)Temp.GetLength());
		for(int j=0; j<Temp.GetLength(); j++)
		{
			AddChar(Ret, Temp.GetAt(j) - '0');
		}		
	}

	return Ret;
}
Example #9
0
void ASNLexer::LookupIdentifier(void)
{
    while ( true ) {
        char c = Char();
        if ( IsAlNum(c) )
            AddChar();
        else if ( c == '-' ) {
            if ( IsAlNum(Char(1)) )
                AddChars(2);
            else {
                if ( AllowIDsEndingWithMinus() )
                    AddChar();
                return;
            }
        }
        else
            return;
    }
}
Example #10
0
//FreeTypeCharData
FreeTypeCharData::FreeTypeCharData(FreeTypeCharData** ppCh, FreeTypeCharData** ppGl, WCHAR wch, UINT glyphindex, int width, int mru, int gdiWidth, int AAMode)
	: m_ppSelfGlyph(ppGl), m_glyphindex(glyphindex), m_width(width)
	, m_glyph(NULL), m_glyphMono(NULL), m_bmpSize(0), m_bmpMonoSize(0)
	, FreeTypeMruCounter(mru), m_gdiWidth(gdiWidth), m_AAMode(AAMode)
{
	g_pFTEngine->AddMemUsedObj(this);
	AddChar(ppCh);
#ifdef _DEBUG
	m_wch = wch;
#endif
}
Example #11
0
EXC_TYPE IStrlBuilder::Repeat (const TCHAR tch, const UINT32 ulNumReps)
{
	for (UINT32	rIndex=0; rIndex < ulNumReps; rIndex++)
	{
		EXC_TYPE	exc=AddChar(tch);
		if (exc != EOK)
			return exc;
	}

	return EOK;
}
Example #12
0
TToken ASNLexer::LookupToken(void)
{
    char c = Char();
    switch ( c ) {
    case ':':
        if ( Char(1) == ':' && Char(2) == '=' ) {
            StartToken();
            AddChars(3);
            return T_DEFINE;
        }
        return T_SYMBOL;
    case '-':
    case '+':
        if ( IsDigit(Char(1)) ) {
            StartToken();
            AddChar();
            return LookupNumber();
        }
        return T_SYMBOL;
    case '\"':
        StartToken();
        AddChar();
        StartString();
        LookupString();
        return T_STRING;
    case '\'':
        StartToken();
        AddChar();
        return LookupBinHexString();
    case '[':
        StartToken();
        AddChar();
        LookupTag();
        return T_TAG;
    default:
        if ( IsDigit(c) ) {
            StartToken();
            AddChar();
            return LookupNumber();
        }
        else if ( c >= 'a' && c <= 'z' ) {
            StartToken();
            AddChar();
            LookupIdentifier();
            return T_IDENTIFIER;
        }
        else if ( c >= 'A' && c <= 'Z' ) {
            StartToken();
            AddChar();
            LookupIdentifier();
            return LookupKeyword();
        }
        return T_SYMBOL;
    }
}
Example #13
0
File: tlv.c Project: softirq/common
/*-----------------------------------------------------------------------------
 *  pack a number tlv
 *-----------------------------------------------------------------------------*/
int AddNumTlv(char **ppCur, int *piLeftLen, NumTLV *pstNumTlv)
{
    uint16_t wType = 0, wLen = 0;

    if(ppCur == NULL || piLeftLen == NULL || pstNumTlv == NULL )
    {
        return -1;
    }

    wType = pstNumTlv->wType;
    wLen = pstNumTlv->wLen;

    if(wType == 0 ||  wLen == 0 || wLen > MAX_NUMBER_TLV_LEN)
    {
        return -2;
    }

    if((AddWord(ppCur, piLeftLen, wType)) != 0)
        return -3;

    if((AddWord(ppCur, piLeftLen, wLen)) != 0)
        return -4;

    if(wLen == CHAR_LEN)
    {
        if((AddChar(ppCur, piLeftLen, pstNumTlv->stValue.cValue)) != 0)
            return -5;
    }
    else if(wLen == WORD_LEN)
    {
        if((AddWord(ppCur, piLeftLen, pstNumTlv->stValue.wValue)) != 0)
            return -6;
    }
    else if(wLen == DWORD_LEN)
    {
        if((AddDWord(ppCur, piLeftLen, pstNumTlv->stValue.dwValue)) != 0)
            return -7;
    }
    else if(wLen == DDWORD_LEN)
    {
        if((AddDDWord(ppCur, piLeftLen, pstNumTlv->stValue.ddwValue)) != 0)
            return -8;
    }
    else
    {
        printf("GetNumTlvValue error. wLen = %d\n", wLen);
        return -9;
    }

    return 0;
}
Example #14
0
void ASNLexer::LookupString(void)
{
    while ( true ) {
        char c = Char();
        switch ( c ) {
        case '\r':
        case '\n':
            LexerWarning("unclosed string", 1);
            return;
        case 0:
            if ( Eof() ) {
                LexerWarning("unclosed string", 2);
                return;
            }
            LexerWarning("illegal character in string: \\0", 3);
            AddStringChar(c);
            AddChar();
            break;
        case '\"':
            if ( Char(1) != '\"' ) {
                AddChar();
                return;
            }
            AddChars(2);
            break;
        default:
            if ( c < ' ' && c > '\0' ) {
                LexerWarning("illegal character in string: \\...", 4);
            }
            else {
                AddStringChar(c);
            }
            AddChar();
            break;
        }
    }
}
Example #15
0
EXC_TYPE IStrlBuilder::AddPadNum (const UINT32	ulVal,
											 const UINT32	ulVLen,	/* may NOT be 0 */
											 const TCHAR	padCh,	/* may NOT be '\0' */
											 const BOOLEAN	fLeftPad)
{
	if ((0 == ulVLen) || (_T('\0') == padCh))
		return EPARAM;

	TCHAR		szV[MAX_DWORD_DISPLAY_LENGTH+2]=_T("");
	UINT32	ulVLL=::dword_to_argument(ulVal, szV), vIdx=ulVLL;
	if (ulVLL > ulVLen)
		return EOVERFLOW;

	EXC_TYPE	exc=EOK;
	if (fLeftPad)
	{
		/* add padding */
		for (vIdx=ulVLL; vIdx < ulVLen; vIdx++)
			if ((exc=AddChar(padCh)) != EOK)
				return exc;

		if ((exc=AddChars(szV, ulVLL)) != EOK)
			return exc;
	}
	else	/* right pad */
	{
		if ((exc=AddChars(szV, ulVLL)) != EOK)
			return exc;

		/* add padding */
		for (vIdx=ulVLL; vIdx < ulVLen; vIdx++)
			if ((exc=AddChar(padCh)) != EOK)
				return exc;
	}

	return EOK;
}
Example #16
0
int TEXTEDITBOX::ProcFunction(PASSPROCVARS Params){
	TCHAR Char;
	//
	switch(Params.uMsg){
	case WM_PAINT:
		RestoreFonts();
		Pass.DDFront->Restore();
		Pass.DDBack->Restore();
		this->EditBoxSurface->Restore();
		DDReLoadBitmap(this->EditBoxSurface, BMP_TEXTEDITBOX);
		this->StorageSurface->Restore();
		break;
	case WM_CHAR:
		switch(Params.wParam){
			case 0x08:  /* backspace */
				DeleteChar();
				break;
			case 0x0A:  /* linefeed */
			case 0x0D:  /* carriage return */
				Info=TEBI_DONE;
				break;
			case 0x1B:  /* escape */
			case 0x09:  /* tab */
				break;
			default:
				//normal character:
				Char=(TCHAR) Params.wParam;
				AddChar(Char);
			break;
		}
		break;
		case WM_KEYDOWN:
		///put it in the box.
		switch(Params.wParam){
			case VK_RETURN:
				break;
			case VK_ESCAPE:
				break;
			case VK_LEFT:
				break;
			case VK_RIGHT:
				break;
		}
		break;
	}

	UpdateBox();
	return 0;
}
Example #17
0
EXC_TYPE IStrlBuilder::AddTime (const UINT8	bHour,
										  const UINT8	bMinute,
										  const UINT8	bSecond)
{
	EXC_TYPE	exc=EOK;

	if ((bHour >= 24) || (bMinute >= 60) || (bSecond >= 60))
		return EINVALIDTIME;

	if ((exc=AddPadNum(bHour, 2)) != EOK)
		return exc;
	if ((exc=AddChar(_T(':'))) != EOK)
		return exc;

	if ((exc=AddPadNum(bMinute, 2)) != EOK)
		return exc;
	if ((exc=AddChar(_T(':'))) != EOK)
		return exc;

	if ((exc=AddPadNum(bSecond, 2)) != EOK)
		return exc;

	return EOK;
}
Example #18
0
void FontString::UpdateMesh()
{
    if(m_MeshNeedsUpdate)
    {
        VertexList Vertices;
        IndexList Indices;

        for(int i = 0; i < m_Content.size(); i++)
        {
            AddChar(m_Content[i], &Vertices, &Indices);
        }

        m_Mesh->LoadMesh(Vertices, Indices);
        m_MeshNeedsUpdate = false;
    }
}
Example #19
0
EXC_TYPE IStrlBuilder::AddGMTOffset (const int	iTimeZone)	/* (-1) == use internal */
{
	BYTE		hrsOffset=0, minsOffset=0;
	int		itz=(((-1) == iTimeZone) ? _timezone : iTimeZone);
	EXC_TYPE	exc=::GetTimeZoneComponents(itz, &hrsOffset, &minsOffset);
	if (exc != EOK)
		return exc;

	if ((exc=AddChar(((itz < 0) ? _T('+') : _T('-')))) != EOK)
		return exc;
	if ((exc=AddPadNum(hrsOffset, 2)) != EOK)
		return exc;
	if ((exc=AddPadNum(minsOffset, 2)) != EOK)
		return exc;

	return EOK;
}
Example #20
0
void DeleteCharBackward(HIMC hIMC,WORD wParam)
{
	if(wConversionMode & CONVERSION_MODE_PHRASETOCHAR){
		MakeResultString(hIMC,FALSE);
	}
	else if( wConversionMode & CONVERSION_MODE_I   || 
			 wConversionMode & CONVERSION_MODE_U   ||
			 wConversionMode & CONVERSION_MODE_V ) {

	    LPINPUTCONTEXT lpIMC;
		LPCANDIDATEINFO lpCandInfo;
		LPCANDIDATELIST lpCandList;
		LPCOMPOSITIONSTRING lpCompStr;
		GENEMSG GnMsg;
		LPTSTR lpStr;

		lpIMC = ImmLockIMC(hIMC);
		lpCandInfo = (LPCANDIDATEINFO)ImmLockIMCC(lpIMC->hCandInfo);
		lpCandList = (LPCANDIDATELIST)((LPSTR)lpCandInfo  + lpCandInfo->dwOffset[0]);
		lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);

		if( !lpCandList->dwCount ) MakeResultString(hIMC,FALSE);
		else{
			lpCandList->dwCount = 0;

			lpStr = GETLPCOMPSTR(lpCompStr);
			lpStr = CharPrev(lpStr,lpStr + _tcslen(lpStr));
			*lpStr= _T('\0');

			lpStr = ((LPMYCOMPSTR)lpCompStr)->FreePYComp.szPaintCompStr;
			lpStr = CharPrev(lpStr,lpStr + _tcslen(lpStr));
			*lpStr= _T('\0');

			GnMsg.msg = WM_IME_COMPOSITION;
			GnMsg.wParam = 0;
			GnMsg.lParam = GCS_COMPSTR;
			GenerateMessage(hIMC, lpdwCurTransKey,(LPGENEMSG)&GnMsg);
		}
		ImmUnlockIMCC(lpIMC->hCompStr);
		ImmUnlockIMCC(lpIMC->hCandInfo);
		ImmUnlockIMC(hIMC);
	}
	else AddChar(hIMC,wParam,EDIT_BACK);
	return;
}
Example #21
0
CodePage::CodePage()
{
	SET_SHARED_PTR(codepage);

	memset(m_pages, 0, sizeof(m_pages));
	memset(m_codes, 0, sizeof(m_codes));
	m_num = 0;

	// rozsireni tabulky o zakladni ascii znaky
	for (wchar_t c = ' '; c <= 'z';c++)
		AddChar(c);

	GetExec()->Register("specialchars", CodePage::c_specialchars, NULL, "Register next unicode chars.");
	//Register("quit",c_quit,NULL,"quit program");
	//Register("quit!",c_fquit,NULL,"force quit");
	//Register("help",c_help,NULL);
	//Register("list",c_list,NULL,"List all commands.");
}
Example #22
0
BOOL CCmdParse::ProcessCmdLine()
{
	State = e_start;
	Previous = State; //may be used in the future

	m_pCurrent = &m_szParseString[0];	                          
	memset(m_Token,'\0',512);
	
	while(State != e_end)
	{
		switch(State)
		{  
			//   
			case e_error:
				return FALSE;
			  
			default:
				AddChar();
				 
		}
	}
    return TRUE;		
}
Example #23
0
void LVRtfParser::OnControlWord( const char * control, int param, bool asterisk )
{
    const rtf_control_word * cw = findControlWord( control );
    if ( cw ) {
        switch ( cw->type ) {
        case CWT_CHAR:
            {
                lChar16 ch = (lChar16)cw->index;
                if ( ch==13 ) {
                    // TODO: end of paragraph
                    CommitText();
                    m_stack.getDestination()->OnAction(LVRtfDestination::RA_PARA);
                } else {
                    AddChar(ch);
                }
            }
            break;
        case CWT_STYLE:
            break;
        case CWT_ACT:
            CommitText();
            m_stack.getDestination()->OnAction(cw->index);
            break;
        case CWT_TPROP:
            CommitText();
            if ( param == PARAM_VALUE_NONE )
                param = cw->defvalue;
            m_stack.getDestination()->OnTblProp( cw->index, param );
            break;
        case CWT_DEST:
#ifdef LOG_RTF_PARSING
            CRLog::trace("DEST: \\%s", cw->name);
#endif
            switch ( cw->index ) {
            case dest_upr:
                m_stack.set( pi_skip_ansi, 1 );
                break;
            case dest_ud:
                m_stack.set( pi_skip_ansi, 0 );
                break;
            case dest_fonttbl:
                m_stack.set( new LVRtfNullDestination(*this) );
                break;
            case dest_stylesheet:
                m_stack.set( new LVRtfNullDestination(*this) );
                break;
            case dest_footnote:
                m_stack.set( new LVRtfNullDestination(*this) );
                break;
            case dest_info:
            case dest_header:
            case dest_footer:
            case dest_colortbl:
                m_stack.set( new LVRtfNullDestination(*this) );
                break;
            case dest_pict:
                m_stack.set( new LVRtfPictDestination(*this) );
                break;
            }
            break;
        case CWT_IPROP:
            CommitText();
            if ( param == PARAM_VALUE_NONE )
                param = cw->defvalue;
#ifdef LOG_RTF_PARSING
            CRLog::trace("PROP: \\%s %d", cw->name, param);
#endif
            m_stack.set( cw->index, param );
            break;
        }
    } else {
#ifdef LOG_RTF_PARSING
        CRLog::trace("CW: %s\\%s %d", asterisk?"\\*":"", control, param==PARAM_VALUE_NONE ? 0 : param);
#endif
        if ( asterisk ) {
            // ignore text after unknown keyword
            m_stack.set( new LVRtfNullDestination(*this) );
#ifdef LOG_RTF_PARSING
            CRLog::trace("Ignoring unknown destination %s !!!", control );
#endif
        }
    }
}
Example #24
0
	const T_CHAR * Peek()
	{
		AddChar(0);
		used--;
		return data;
	}
Example #25
0
	void AddString(const T_CHAR * z)
	{
		while(*z) {AddChar(*z);z++;}
	}
Example #26
0
static unsigned MechMisc( unsigned select, unsigned parm )
{
    long                value;
    unsigned            result = 0;
    mad_type_info       mti;

    switch( select ) {
    case 0:
        ExprAddrDepth += parm;
        result = ExprAddrDepth;
        break;
    case 1:
        if( _IsOn( SW_EXPR_IS_CALL ) && ExprAddrDepth == 0 ) {
            result = TRUE;
        } else {
            result = FALSE;
        }
        break;
    case 2:
        SkipCount += parm;
        break;
    case 3:
        result = SkipCount;
        break;
    case 4:
        //never called
        break;
    case 5:
        if( ScanSavePtr >= MAX_SCANSAVE_PTRS )
            Error( ERR_INTERNAL, LIT( ERR_TOO_MANY_SCANSAVE ) );
        CurrScan[ScanSavePtr++] = ScanPos();
        break;
    case 6:
        if( ScanSavePtr <= 0 ) Error( ERR_INTERNAL, LIT( ERR_TOO_MANY_SCANRESTORE ) );
        ReScan( CurrScan[--ScanSavePtr] );
        break;
    case 7:
        if( ScanSavePtr <= 0 ) Error( ERR_INTERNAL, LIT( ERR_TOO_MANY_SCANRESTORE ) );
        --ScanSavePtr;
        break;
    case 8:
        if( parm ) {        /* start scan string */
            scan_string = TRUE;
            ReScan( ScanPos() );
        } else {            /* end scan string */
            scan_string = FALSE;
            ReScan( ScanPos() );
        }
        break;
    case 9:
        ReScan( ScanPos() + (int)parm );
        break;
    case 10:
        AddChar();
        break;
    case 11:
        AddCEscapeChar();
        break;
    case 12:
        AddActualChar( '\0' );
        break;
    case 13:
        ScanCCharNum = parm;
        break;
    case 14:
        if( NestedCallLevel == MAX_NESTED_CALL - 1 ) {
            Error( ERR_NONE, LIT( ERR_TOO_MANY_CALLS ) );
        } else {
            PgmStackUsage[ ++NestedCallLevel ] = 0;
        }
        break;
    case 15:
        RValue( ExprSP );
        ConvertTo( ExprSP, TK_INTEGER, TM_SIGNED, 4 );
        value = U32FetchTrunc( ExprSP->v.uint ) - 1;
        PopEntry();
        if( ExprSP->info.kind == TK_STRING ) {
            if( value < 0 || value >= ExprSP->info.size ) {
                Error( ERR_NONE, LIT( ERR_BAD_SUBSTRING_INDEX ) );
            }
            LocationAdd( &ExprSP->v.string.loc, value*8 );
            ExprSP->info.size -= value;
            ExprSP->v.string.ss_offset = value;
        } else {
            Error( ERR_NONE, LIT( ERR_ILL_TYPE ) );
        }
        break;
    case 16:
        RValue( ExprSP );
        ConvertTo( ExprSP, TK_INTEGER, TM_SIGNED, 4 );
        value = U32FetchTrunc( ExprSP->v.sint ) - 1;
        PopEntry();
        if( ExprSP->info.kind == TK_STRING ) {
            value -= ExprSP->v.string.ss_offset;
            if( value < 0 || value >= ExprSP->info.size ) {
                Error( ERR_NONE, LIT( ERR_BAD_SUBSTRING_INDEX ) );
            }
            ExprSP->info.size = value;
        } else {
            Error( ERR_NONE, LIT( ERR_ILL_TYPE ) );
        }
        break;
    case 17:
        EvalSubstring = parm;
        if( parm ) ExprSP->v.string.ss_offset = 0;
        break;
    case 18:
        result = EvalSubstring;
        break;
    case 19:
        FreePgmStack( TRUE );
        break;
    case 20:
        switch( parm ) { // nyi - begin temp
        case SSL_CASE_SENSITIVE:
            _SwitchOn( SW_CASE_SENSITIVE );
            break;
        case SSL_SIDE_EFFECT:
            _SwitchOn( SW_SIDE_EFFECT );
            break;
        //case SSL_32_BIT:
        //    _SwitchOn( SW_32_BIT );
        //    break;
        }
        break;
    case 21:
        switch( parm ) {
        case SSL_CASE_SENSITIVE:
            _SwitchOff( SW_CASE_SENSITIVE );
            break;
        case SSL_SIDE_EFFECT:
            _SwitchOff( SW_SIDE_EFFECT );
            break;
        //case SSL_32_BIT:
        //    _SwitchOff( SW_32_BIT );
        //    break;
        }
        break;
    case 22:
        switch( parm ) {
        case SSL_CASE_SENSITIVE:
            result = _IsOn( SW_CASE_SENSITIVE );
            break;
        case SSL_SIDE_EFFECT:
            result = _IsOn( SW_SIDE_EFFECT );
            break;
        case SSL_32_BIT:
            GetMADTypeDefault( MTK_INTEGER, &mti );
            result = (mti.b.bits >= 32);
            break;
        }
        break;
    case 23: // nyi - end temp
        MarkArrayOrder( parm );
        break;
    case 24:
        StartSubscript();
        break;
    case 25:
        AddSubscript();
        break;
    case 26:
        EndSubscript();
        break;
    }
    return( result );
}
Example #27
0
bool CUICustomEdit::KeyPressed(int dik)
{
	xr_map<u32, char>::iterator it;
	char out_me = 0;
	bool bChanged = false;
	switch(dik)
	{
	case DIK_LEFT:
	case DIKEYBOARD_LEFT:
		m_lines.DecCursorPos();		
		break;
	case DIK_RIGHT:
	case DIKEYBOARD_RIGHT:
		m_lines.IncCursorPos();		
		break;
	case DIK_LSHIFT:
	case DIK_RSHIFT:
		m_bShift = true;
		break;
	case DIK_ESCAPE:
		if (xr_strlen(GetText()) != 0)
		{
			SetText("");
			bChanged = true;
		}
		else
		{
			GetParent()->SetKeyboardCapture(this, false);
			m_bInputFocus = false;
			m_iKeyPressAndHold = 0;
		};
		break;
	case DIK_RETURN:
	case DIK_NUMPADENTER:
		GetParent()->SetKeyboardCapture(this, false);
		m_bInputFocus = false;
		m_iKeyPressAndHold = 0;
		GetMessageTarget()->SendMessage(this,EDIT_TEXT_COMMIT,NULL);
		break;
	case DIK_BACKSPACE:
		m_lines.DelLeftChar();
		bChanged = true;
		break;
	case DIK_DELETE:
	case DIKEYBOARD_DELETE:
		m_lines.DelChar();
		bChanged = true;
		break;
	case DIK_SPACE:
		out_me = ' ';					break;
	case DIK_LBRACKET:
		out_me = m_bShift ? '{' : '[';	break;
	case DIK_RBRACKET:
		out_me = m_bShift ? '}' : ']';	break;
	case DIK_SEMICOLON:
		out_me = m_bShift ? ':' : ';';	break;
	case DIK_APOSTROPHE:
		out_me = m_bShift ? '"' : '\'';	break;
	case DIK_BACKSLASH:
		out_me = m_bShift ? '|' : '\\';	break;
	case DIK_SLASH:
		out_me = m_bShift ? '?' : '/';	break;
	case DIK_COMMA:
		out_me = m_bShift ? '<' : ',';	break;
	case DIK_PERIOD:
		out_me = m_bShift ? '>' : '.';	break;
	case DIK_MINUS:
		out_me = m_bShift ? '_' : '-';	break;
	case DIK_EQUALS:
		out_me = m_bShift ? '+' : '=';	break;
	default:
		it = gs_DIK2CHR.find(dik);

		//нажата клавиша с буквой 
		if (gs_DIK2CHR.end() != it){
			AddLetter((*it).second);
			bChanged = true;
		}

		break;
	}

	if (m_bNumbersOnly)
	{
		if (strstr(m_lines.GetText(), "."))
			return true;
		if (('.' == out_me) && m_bFloatNumbers){
			AddChar(out_me);
			bChanged = true;
		}
	}
	else
		if(out_me){
			AddChar(out_me);
			bChanged = true;
		}

		if(bChanged)
			GetMessageTarget()->SendMessage(this,EDIT_TEXT_CHANGED,NULL);

		return true;
}
Example #28
0
void CRenderer::DrawText( const MGuiRendFont* fnt, const char_t* text, int32 x, int32 y, uint32 flags, const MGuiFormatTag tags[], uint32 ntags )
{
	int32 dx, dy, lineX, lineY;
	uint32 c, ntag = 0, idx = 0;
	colour_t lineColour, defaultColour;
	register const char_t* s;
	const MGuiFormatTag* tag = NULL;
	const CFont* font = (const CFont*)fnt;

	if ( fnt == NULL || text == NULL ) return;

	lineStatus = LINE_IDLE;

	if ( renderTexture == NULL || renderTexture != font->texture )
	{
		Flush();
		renderTexture = font->texture;
	}

	IncreaseZPlane();
	UpdateVertexFormat( true );

	renderFont = font;
	defaultColour.hex = drawColour.hex;

	if ( tags && ntags > 0 ) tag = &tags[ntag];

	dx = x; lineX = dx;
	dy = y; lineY = dy;

	for ( s = text; *s; ++s, ++idx )
	{
		c = *(uchar_t*)s;

		// Process possible format tags for this index
		if ( tag && tag->index == idx )
		{
			ProcessTag( tag );
			ProcessUnderline( font, dx, dy, lineX, lineY, lineColour );

			if ( ++ntag < ntags ) tag = &tags[ntag];
			else tag = NULL;
		}

		if ( c < font->first_char || c > font->last_char )
		{
			continue;
		}
		else
		{
			dx += AddChar( c - font->first_char, dx, dy, flags );		
		}
	}

	Flush();

	// Finish the underline in case the end tag was missing
	if ( lineStatus == LINE_DRAWING )
	{
		lineStatus = LINE_DRAW;
		ProcessUnderline( font, dx, dy, lineX, lineY, lineColour );
	}

	// Reset back to default colour if the end tag was missing.
	if ( drawColour.hex != defaultColour.hex )
	{
		SetDrawColour( &defaultColour );
	}

	UpdateVertexFormat( false );

	renderTexture = NULL;
	renderFont = NULL;
}
Example #29
0
void LVRtfParser::AddChar8( lUInt8 ch )
{
    lChar16 ch16 = m_stack.byteToUnicode(ch);
    if ( ch16 )
        AddChar( ch16 );
}
Example #30
0
/// parses input stream
bool LVRtfParser::Parse()
{
    //m_conv_table = GetCharsetByte2UnicodeTable( L"cp1251" );

    bool errorFlag = false;
    m_callback->OnStart(this);

    // make fb2 document structure
    m_callback->OnTagOpen( NULL, L"?xml" );
    m_callback->OnAttribute( NULL, L"version", L"1.0" );
    m_callback->OnAttribute( NULL, L"encoding", L"utf-8" );
    //m_callback->OnEncoding( GetEncodingName().c_str(), GetCharsetTable( ) );
    m_callback->OnTagBody();
    m_callback->OnTagClose( NULL, L"?xml" );
    m_callback->OnTagOpenNoAttr( NULL, L"FictionBook" );
      // DESCRIPTION
      m_callback->OnTagOpenNoAttr( NULL, L"description" );
        m_callback->OnTagOpenNoAttr( NULL, L"title-info" );
          //
            lString16 bookTitle = LVExtractFilenameWithoutExtension( getFileName() ); //m_stream->GetName();
            m_callback->OnTagOpenNoAttr( NULL, L"book-title" );
                if ( !bookTitle.empty() )
                    m_callback->OnText( bookTitle.c_str(), bookTitle.length(), 0 );
          //queue.DetectBookDescription( m_callback );
        m_callback->OnTagOpenNoAttr( NULL, L"title-info" );
      m_callback->OnTagClose( NULL, L"description" );
      // BODY
      m_callback->OnTagOpenNoAttr( NULL, L"body" );
        //m_callback->OnTagOpen( NULL, L"section" );
          // process text
          //queue.DoTextImport( m_callback );
        //m_callback->OnTagClose( NULL, L"section" );

    txtbuf = new lChar16[ MAX_TXT_SIZE+1 ];
    txtpos = 0;
    txtfstart = 0;
    char cwname[33];
    while ( !Eof() && !errorFlag && !m_stopped ) {
        // load next portion of data if necessary
        if ( m_buf_len - m_buf_pos < MIN_BUF_DATA_SIZE ) {
            if ( !FillBuffer( MIN_BUF_DATA_SIZE*2 ) ) {
                errorFlag = true;
                break;
            }
        }
        int len = (int)m_buf_len - (int)m_buf_pos;
        // check end of file
        if ( len <=0 )
            break; //EOF
        const lUInt8 * p = m_buf + m_buf_pos;
        lUInt8 ch = *p++;
        if ( ch=='{' ) {
            OnBraceOpen();
            m_buf_pos++;
            continue;
        } else if ( ch=='}' ) {
            OnBraceClose();
            m_buf_pos++;
            continue;
        }
        lUInt8 ch2 = *p;
        if ( ch=='\\' && *p!='\'' ) {
            // control
            bool asteriskFlag = false;
            if ( ch2=='*' ) {
                ch = *(++p);
                ch2 = *(++p);
                asteriskFlag = true;
            }
            if ( (ch2>='A' && ch2<='Z') || (ch2>='a' && ch2<='z') ) {
                // control word
                int cwi = 0;
                do {
                    cwname[cwi++] = ch2;
                    ch2 = *++p;
                } while ( ( (ch2>='A' && ch2<='Z') || (ch2>='a' && ch2<='z') ) && cwi<32 );
                cwname[cwi] = 0;
                int param = PARAM_VALUE_NONE;
                if ( ch2==' ' ) {
                    p++;
                } else {
                    if ( ch2 == '-' ) {
                        p++;
                        param = 0;
                        for ( ;; ) {
                            ch2 = *++p;
                            if ( ch2<'0' || ch2>'9' )
                                break;
                            param = param * 10 + (ch2-'0');
                        }
                        param = -param;
                    } else if ( ch2>='0' && ch2<='9' ) {
                        param = 0;
                        while ( ch2>='0' && ch2<='9' ) {
                            param = param * 10 + (ch2-'0');
                            ch2 = *++p;
                        }
                    }
                    if ( *p == ' ' )
                        p++;
                }
                // \uN -- unicode character
                if ( cwi==1 && cwname[0]=='u' ) {
                    AddChar( (lChar16) (param & 0xFFFF) );
//                    if ( m_stack.getInt( pi_skip_ch_count )==0 )
//                        m_stack.set( pi_skip_ch_count, 1 );
                } else {
                    // usual control word
                    OnControlWord( cwname, param, asteriskFlag );
                }
            } else {
                // control char
                cwname[0] = ch2;
                cwname[1] = 0;
                p++;
                OnControlWord( cwname, PARAM_VALUE_NONE, asteriskFlag );
            }
            m_buf_pos += p - (m_buf + m_buf_pos);
        } else {
            //lChar16 txtch = 0;
            if ( ch=='\\' ) {
                p++;
                int digit1 = charToHex( p[0] );
                int digit2 = charToHex( p[1] );
                p+=2;
                if ( digit1>=0 && digit2>=0 ) {
                    AddChar8( (lChar8)((digit1 << 4) | digit2) );
                } else {
                    AddChar('\\');
                    AddChar('\'');
                    AddChar8(digit1);
                    AddChar8(digit2);
                    p+=2;
                }
            } else {
                if ( ch>=' ' ) {

                    AddChar8( ch );
                } else {
                    // wrong char
                }
            }
            //=======================================================
            //=======================================================
            m_buf_pos += p - (m_buf + m_buf_pos);
        }
    }
    m_callback->OnStop();
    delete[] txtbuf;
    txtbuf = NULL;

    CommitText();
    m_stack.getDestination()->OnAction(LVRtfDestination::RA_SECTION);

      m_callback->OnTagClose( NULL, L"body" );
    m_callback->OnTagClose( NULL, L"FictionBook" );

    return !errorFlag;
}