Jean-Claude Batista
Wraps some RichEdit control functionality on an Edit control. It uses a free implementation of an RTF parser written by Paul DuBois http://www.primate.wisc.edu/software/RTF/ which I modified a bit to work with the control.
This commit is contained in:
parent
2de84c9bfa
commit
688c05301a
|
@ -4,13 +4,15 @@ SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = riched32
|
MODULE = riched32
|
||||||
SOVERSION = 1.0
|
SOVERSION = 1.0
|
||||||
IMPORTS =
|
|
||||||
WRCEXTRA = -s -p$(MODULE)
|
WRCEXTRA = -s -p$(MODULE)
|
||||||
|
|
||||||
SPEC_SRCS = riched32.spec
|
SPEC_SRCS = riched32.spec
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
riched32_main.c
|
charlist.c \
|
||||||
|
reader.c \
|
||||||
|
text-writer.c \
|
||||||
|
richedit.c
|
||||||
|
|
||||||
@MAKE_DLL_RULES@
|
@MAKE_DLL_RULES@
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,211 @@
|
||||||
|
/*
|
||||||
|
RTF ANSI character set (\ansi) general map
|
||||||
|
These are taken from the ISO-Latin-1 (ISO-8859-1) encodings, with
|
||||||
|
a few additions
|
||||||
|
|
||||||
|
Field 1 is the standard character name which the character value in
|
||||||
|
field 2 maps onto. (It doesn't mean "to produce the character in field 1,
|
||||||
|
use the value in field 2.)
|
||||||
|
|
||||||
|
The character value may be given either as a single character (which will be
|
||||||
|
converted to the ASCII value of the character), or in numeric format, either
|
||||||
|
in decimal or 0xyy as hex yy. Single or double quotes may be used to quote
|
||||||
|
characters.*/
|
||||||
|
|
||||||
|
int ansi_gen[] =
|
||||||
|
{
|
||||||
|
rtfSC_formula ,0x06,
|
||||||
|
rtfSC_nobrkhyphen ,0x1e,
|
||||||
|
rtfSC_opthyphen ,0x1f,
|
||||||
|
rtfSC_space ,' ',
|
||||||
|
rtfSC_exclam ,'!',
|
||||||
|
rtfSC_quotedbl ,'"',
|
||||||
|
rtfSC_numbersign ,'#',
|
||||||
|
rtfSC_dollar ,'$',
|
||||||
|
rtfSC_percent ,'%',
|
||||||
|
rtfSC_ampersand ,'&',
|
||||||
|
rtfSC_quoteright ,'\\',
|
||||||
|
rtfSC_parenleft ,'(',
|
||||||
|
rtfSC_parenright ,')',
|
||||||
|
rtfSC_asterisk ,'*',
|
||||||
|
rtfSC_plus ,'+',
|
||||||
|
rtfSC_comma ,',',
|
||||||
|
rtfSC_hyphen ,'-',
|
||||||
|
rtfSC_period ,'.',
|
||||||
|
rtfSC_slash ,'/',
|
||||||
|
rtfSC_zero ,'0',
|
||||||
|
rtfSC_one ,'1',
|
||||||
|
rtfSC_two ,'2',
|
||||||
|
rtfSC_three ,'3',
|
||||||
|
rtfSC_four ,'4',
|
||||||
|
rtfSC_five ,'5',
|
||||||
|
rtfSC_six ,'6',
|
||||||
|
rtfSC_seven ,'7',
|
||||||
|
rtfSC_eight ,'8',
|
||||||
|
rtfSC_nine ,'9',
|
||||||
|
rtfSC_colon ,':',
|
||||||
|
rtfSC_semicolon ,';',
|
||||||
|
rtfSC_less ,'<',
|
||||||
|
rtfSC_equal ,'=',
|
||||||
|
rtfSC_greater ,'>',
|
||||||
|
rtfSC_question ,'?',
|
||||||
|
rtfSC_at ,'@',
|
||||||
|
rtfSC_A ,'A',
|
||||||
|
rtfSC_B ,'B',
|
||||||
|
rtfSC_C ,'C',
|
||||||
|
rtfSC_D ,'D',
|
||||||
|
rtfSC_E ,'E',
|
||||||
|
rtfSC_F ,'F',
|
||||||
|
rtfSC_G ,'G',
|
||||||
|
rtfSC_H ,'H',
|
||||||
|
rtfSC_I ,'I',
|
||||||
|
rtfSC_J ,'J',
|
||||||
|
rtfSC_K ,'K',
|
||||||
|
rtfSC_L ,'L',
|
||||||
|
rtfSC_M ,'M',
|
||||||
|
rtfSC_N ,'N',
|
||||||
|
rtfSC_O ,'O',
|
||||||
|
rtfSC_P ,'P',
|
||||||
|
rtfSC_Q ,'Q',
|
||||||
|
rtfSC_R ,'R',
|
||||||
|
rtfSC_S ,'S',
|
||||||
|
rtfSC_T ,'T',
|
||||||
|
rtfSC_U ,'U',
|
||||||
|
rtfSC_V ,'V',
|
||||||
|
rtfSC_W ,'W',
|
||||||
|
rtfSC_X ,'X',
|
||||||
|
rtfSC_Y ,'Y',
|
||||||
|
rtfSC_Z ,'Z',
|
||||||
|
rtfSC_bracketleft ,'[',
|
||||||
|
rtfSC_backslash ,'\\',
|
||||||
|
rtfSC_bracketright ,']',
|
||||||
|
rtfSC_asciicircum ,'^',
|
||||||
|
rtfSC_underscore ,'_',
|
||||||
|
rtfSC_quoteleft ,'`',
|
||||||
|
rtfSC_a ,'a',
|
||||||
|
rtfSC_b ,'b',
|
||||||
|
rtfSC_c ,'c',
|
||||||
|
rtfSC_d ,'d',
|
||||||
|
rtfSC_e ,'e',
|
||||||
|
rtfSC_f ,'f',
|
||||||
|
rtfSC_g ,'g',
|
||||||
|
rtfSC_h ,'h',
|
||||||
|
rtfSC_i ,'i',
|
||||||
|
rtfSC_j ,'j',
|
||||||
|
rtfSC_k ,'k',
|
||||||
|
rtfSC_l ,'l',
|
||||||
|
rtfSC_m ,'m',
|
||||||
|
rtfSC_n ,'n',
|
||||||
|
rtfSC_o ,'o',
|
||||||
|
rtfSC_p ,'p',
|
||||||
|
rtfSC_q ,'q',
|
||||||
|
rtfSC_r ,'r',
|
||||||
|
rtfSC_s ,'s',
|
||||||
|
rtfSC_t ,'t',
|
||||||
|
rtfSC_u ,'u',
|
||||||
|
rtfSC_v ,'v',
|
||||||
|
rtfSC_w ,'w',
|
||||||
|
rtfSC_x ,'x',
|
||||||
|
rtfSC_y ,'y',
|
||||||
|
rtfSC_z ,'z',
|
||||||
|
rtfSC_braceleft ,'{',
|
||||||
|
rtfSC_bar ,'|',
|
||||||
|
rtfSC_braceright ,'}',
|
||||||
|
rtfSC_asciitilde ,'~',
|
||||||
|
rtfSC_nobrkspace ,0xa0,
|
||||||
|
rtfSC_exclamdown ,0xa1,
|
||||||
|
rtfSC_cent ,0xa2,
|
||||||
|
rtfSC_sterling ,0xa3,
|
||||||
|
rtfSC_currency ,0xa4,
|
||||||
|
rtfSC_yen ,0xa5,
|
||||||
|
rtfSC_brokenbar ,0xa6,
|
||||||
|
rtfSC_section ,0xa7,
|
||||||
|
rtfSC_dieresis ,0xa8,
|
||||||
|
rtfSC_copyright ,0xa9,
|
||||||
|
rtfSC_ordfeminine ,0xaa,
|
||||||
|
rtfSC_guillemotleft ,0xab,
|
||||||
|
rtfSC_logicalnot ,0xac,
|
||||||
|
rtfSC_opthyphen ,0xad,
|
||||||
|
rtfSC_registered ,0xae,
|
||||||
|
rtfSC_macron ,0xaf,
|
||||||
|
rtfSC_degree ,0xb0,
|
||||||
|
rtfSC_plusminus ,0xb1,
|
||||||
|
rtfSC_twosuperior ,0xb2,
|
||||||
|
rtfSC_threesuperior ,0xb3,
|
||||||
|
rtfSC_acute ,0xb4,
|
||||||
|
rtfSC_mu ,0xb5,
|
||||||
|
rtfSC_paragraph ,0xb6,
|
||||||
|
rtfSC_periodcentered ,0xb7,
|
||||||
|
rtfSC_cedilla ,0xb8,
|
||||||
|
rtfSC_onesuperior ,0xb9,
|
||||||
|
rtfSC_ordmasculine ,0xba,
|
||||||
|
rtfSC_guillemotright ,0xbb,
|
||||||
|
rtfSC_onequarter ,0xbc,
|
||||||
|
rtfSC_onehalf ,0xbd,
|
||||||
|
rtfSC_threequarters ,0xbe,
|
||||||
|
rtfSC_questiondown ,0xbf,
|
||||||
|
rtfSC_Agrave ,0xc0,
|
||||||
|
rtfSC_Aacute ,0xc1,
|
||||||
|
rtfSC_Acircumflex ,0xc2,
|
||||||
|
rtfSC_Atilde ,0xc3,
|
||||||
|
rtfSC_Adieresis ,0xc4,
|
||||||
|
rtfSC_Aring ,0xc5,
|
||||||
|
rtfSC_AE ,0xc6,
|
||||||
|
rtfSC_Ccedilla ,0xc7,
|
||||||
|
rtfSC_Egrave ,0xc8,
|
||||||
|
rtfSC_Eacute ,0xc9,
|
||||||
|
rtfSC_Ecircumflex ,0xca,
|
||||||
|
rtfSC_Edieresis ,0xcb,
|
||||||
|
rtfSC_Igrave ,0xcc,
|
||||||
|
rtfSC_Iacute ,0xcd,
|
||||||
|
rtfSC_Icircumflex ,0xce,
|
||||||
|
rtfSC_Idieresis ,0xcf,
|
||||||
|
rtfSC_Eth ,0xd0,
|
||||||
|
rtfSC_Ntilde ,0xd1,
|
||||||
|
rtfSC_Ograve ,0xd2,
|
||||||
|
rtfSC_Oacute ,0xd3,
|
||||||
|
rtfSC_Ocircumflex ,0xd4,
|
||||||
|
rtfSC_Otilde ,0xd5,
|
||||||
|
rtfSC_Odieresis ,0xd6,
|
||||||
|
rtfSC_multiply ,0xd7,
|
||||||
|
rtfSC_Oslash ,0xd8,
|
||||||
|
rtfSC_Ugrave ,0xd9,
|
||||||
|
rtfSC_Uacute ,0xda,
|
||||||
|
rtfSC_Ucircumflex ,0xdb,
|
||||||
|
rtfSC_Udieresis ,0xdc,
|
||||||
|
rtfSC_Yacute ,0xdd,
|
||||||
|
rtfSC_Thorn ,0xde,
|
||||||
|
rtfSC_germandbls ,0xdf,
|
||||||
|
rtfSC_agrave ,0xe0,
|
||||||
|
rtfSC_aacute ,0xe1,
|
||||||
|
rtfSC_acircumflex ,0xe2,
|
||||||
|
rtfSC_atilde ,0xe3,
|
||||||
|
rtfSC_adieresis ,0xe4,
|
||||||
|
rtfSC_aring ,0xe5,
|
||||||
|
rtfSC_ae ,0xe6,
|
||||||
|
rtfSC_ccedilla ,0xe7,
|
||||||
|
rtfSC_egrave ,0xe8,
|
||||||
|
rtfSC_eacute ,0xe9,
|
||||||
|
rtfSC_ecircumflex ,0xea,
|
||||||
|
rtfSC_edieresis ,0xeb,
|
||||||
|
rtfSC_igrave ,0xec,
|
||||||
|
rtfSC_iacute ,0xed,
|
||||||
|
rtfSC_icircumflex ,0xee,
|
||||||
|
rtfSC_idieresis ,0xef,
|
||||||
|
rtfSC_eth ,0xf0,
|
||||||
|
rtfSC_ntilde ,0xf1,
|
||||||
|
rtfSC_ograve ,0xf2,
|
||||||
|
rtfSC_oacute ,0xf3,
|
||||||
|
rtfSC_ocircumflex ,0xf4,
|
||||||
|
rtfSC_otilde ,0xf5,
|
||||||
|
rtfSC_odieresis ,0xf6,
|
||||||
|
rtfSC_divide ,0xf7,
|
||||||
|
rtfSC_oslash ,0xf8,
|
||||||
|
rtfSC_ugrave ,0xf9,
|
||||||
|
rtfSC_uacute ,0xfa,
|
||||||
|
rtfSC_ucircumflex ,0xfb,
|
||||||
|
rtfSC_udieresis ,0xfc,
|
||||||
|
rtfSC_yacute ,0xfd,
|
||||||
|
rtfSC_thorn ,0xfe,
|
||||||
|
rtfSC_ydieresis ,0xff
|
||||||
|
};
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
* RTF ANSI character set (\ansi) Symbol font map
|
||||||
|
*
|
||||||
|
* Field 1 is the standard character name which the character value in
|
||||||
|
* field 2 maps onto. (It doesn't mean "to produce the character in field 1,
|
||||||
|
* use the value in field 2.)
|
||||||
|
*
|
||||||
|
* The character value may be given either as a single character (which will be
|
||||||
|
* converted to the ASCII value of the character), or in numeric format, either
|
||||||
|
* in decimal or 0xyy as hex yy. Single or double quotes may be used to quote
|
||||||
|
* characters.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ansi_sym[] =
|
||||||
|
{
|
||||||
|
rtfSC_formula ,0x06,
|
||||||
|
rtfSC_nobrkhyphen ,0x1e,
|
||||||
|
rtfSC_opthyphen ,0x1f,
|
||||||
|
rtfSC_space ,' ',
|
||||||
|
rtfSC_exclam ,'!',
|
||||||
|
rtfSC_universal ,'"',
|
||||||
|
rtfSC_mathnumbersign ,'#',
|
||||||
|
rtfSC_existential ,'$',
|
||||||
|
rtfSC_percent ,'%',
|
||||||
|
rtfSC_ampersand ,'&',
|
||||||
|
rtfSC_suchthat ,'\\',
|
||||||
|
rtfSC_parenleft ,'(',
|
||||||
|
rtfSC_parenright ,')',
|
||||||
|
rtfSC_mathasterisk ,'*',
|
||||||
|
rtfSC_mathplus ,'+',
|
||||||
|
rtfSC_comma ,',',
|
||||||
|
rtfSC_mathminus ,'-',
|
||||||
|
rtfSC_period ,'.',
|
||||||
|
rtfSC_slash ,'/',
|
||||||
|
rtfSC_zero ,'0',
|
||||||
|
rtfSC_one ,'1',
|
||||||
|
rtfSC_two ,'2',
|
||||||
|
rtfSC_three ,'3',
|
||||||
|
rtfSC_four ,'4',
|
||||||
|
rtfSC_five ,'5',
|
||||||
|
rtfSC_six ,'6',
|
||||||
|
rtfSC_seven ,'7',
|
||||||
|
rtfSC_eight ,'8',
|
||||||
|
rtfSC_nine ,'9',
|
||||||
|
rtfSC_colon ,':',
|
||||||
|
rtfSC_semicolon ,';',
|
||||||
|
rtfSC_less ,'<',
|
||||||
|
rtfSC_mathequal ,'=',
|
||||||
|
rtfSC_greater ,'>',
|
||||||
|
rtfSC_question ,'?',
|
||||||
|
rtfSC_congruent ,'@',
|
||||||
|
rtfSC_Alpha ,'A',
|
||||||
|
rtfSC_Beta ,'B',
|
||||||
|
rtfSC_Chi ,'C',
|
||||||
|
rtfSC_Delta ,'D',
|
||||||
|
rtfSC_Epsilon ,'E',
|
||||||
|
rtfSC_Phi ,'F',
|
||||||
|
rtfSC_Gamma ,'G',
|
||||||
|
rtfSC_Eta ,'H',
|
||||||
|
rtfSC_Iota ,'I',
|
||||||
|
rtfSC_Kappa ,'K',
|
||||||
|
rtfSC_Lambda ,'L',
|
||||||
|
rtfSC_Mu ,'M',
|
||||||
|
rtfSC_Nu ,'N',
|
||||||
|
rtfSC_Omicron ,'O',
|
||||||
|
rtfSC_Pi ,'P',
|
||||||
|
rtfSC_Theta ,'Q',
|
||||||
|
rtfSC_Rho ,'R',
|
||||||
|
rtfSC_Sigma ,'S',
|
||||||
|
rtfSC_Tau ,'T',
|
||||||
|
rtfSC_Upsilon ,'U',
|
||||||
|
rtfSC_varsigma ,'V',
|
||||||
|
rtfSC_Omega ,'W',
|
||||||
|
rtfSC_Xi ,'X',
|
||||||
|
rtfSC_Psi ,'Y',
|
||||||
|
rtfSC_Zeta ,'Z',
|
||||||
|
rtfSC_bracketleft ,'[',
|
||||||
|
rtfSC_backslash ,'\\',
|
||||||
|
rtfSC_bracketright ,']',
|
||||||
|
rtfSC_asciicircum ,'^',
|
||||||
|
rtfSC_underscore ,'_',
|
||||||
|
rtfSC_quoteleft ,'`',
|
||||||
|
rtfSC_alpha ,'a',
|
||||||
|
rtfSC_beta ,'b',
|
||||||
|
rtfSC_chi ,'c',
|
||||||
|
rtfSC_delta ,'d',
|
||||||
|
rtfSC_epsilon ,'e',
|
||||||
|
rtfSC_phi ,'f',
|
||||||
|
rtfSC_gamma ,'g',
|
||||||
|
rtfSC_eta ,'h',
|
||||||
|
rtfSC_iota ,'i',
|
||||||
|
rtfSC_kappa ,'k',
|
||||||
|
rtfSC_lambda ,'l',
|
||||||
|
rtfSC_mu ,'m',
|
||||||
|
rtfSC_nu ,'n',
|
||||||
|
rtfSC_omicron ,'o',
|
||||||
|
rtfSC_pi ,'p',
|
||||||
|
rtfSC_theta ,'q',
|
||||||
|
rtfSC_rho ,'r',
|
||||||
|
rtfSC_sigma ,'s',
|
||||||
|
rtfSC_tau ,'t',
|
||||||
|
rtfSC_upsilon ,'u',
|
||||||
|
rtfSC_omega ,'w',
|
||||||
|
rtfSC_xi ,'x',
|
||||||
|
rtfSC_psi ,'y',
|
||||||
|
rtfSC_zeta ,'z',
|
||||||
|
rtfSC_braceleft ,'{',
|
||||||
|
rtfSC_bar ,'|',
|
||||||
|
rtfSC_braceright ,'}',
|
||||||
|
rtfSC_mathtilde ,'~'
|
||||||
|
};
|
|
@ -0,0 +1,121 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Character List
|
||||||
|
*
|
||||||
|
* Copyright (c) 2000 by Jean-Claude Batista
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "charlist.h"
|
||||||
|
#include "windows.h"
|
||||||
|
|
||||||
|
extern HANDLE RICHED32_hHeap;
|
||||||
|
|
||||||
|
void CHARLIST_Enqueue( CHARLIST* pCharList, char myChar )
|
||||||
|
{
|
||||||
|
CHARLISTENTRY* pNewEntry = HeapAlloc(RICHED32_hHeap, 0,sizeof(CHARLISTENTRY));
|
||||||
|
pNewEntry->pNext = NULL;
|
||||||
|
pNewEntry->myChar = myChar;
|
||||||
|
|
||||||
|
if(pCharList->pTail == NULL)
|
||||||
|
{
|
||||||
|
pCharList->pHead = pCharList->pTail = pNewEntry;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CHARLISTENTRY* pCurrent = pCharList->pTail;
|
||||||
|
pCharList->pTail = pCurrent->pNext = pNewEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
pCharList->nCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CHARLIST_Push( CHARLIST* pCharList, char myChar)
|
||||||
|
{
|
||||||
|
CHARLISTENTRY* pNewEntry = malloc(sizeof(CHARLISTENTRY));
|
||||||
|
|
||||||
|
pNewEntry->myChar = myChar;
|
||||||
|
|
||||||
|
if(pCharList->pHead == NULL)
|
||||||
|
{
|
||||||
|
pCharList->pHead = pCharList->pTail = pNewEntry;
|
||||||
|
pNewEntry->pNext = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pNewEntry->pNext = pCharList->pHead;
|
||||||
|
pCharList->pHead = pNewEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
pCharList->nCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
char CHARLIST_Dequeue(CHARLIST* pCharList)
|
||||||
|
{
|
||||||
|
CHARLISTENTRY* pCurrent;
|
||||||
|
char myChar;
|
||||||
|
|
||||||
|
if(pCharList->nCount == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pCharList->nCount--;
|
||||||
|
myChar = pCharList->pHead->myChar;
|
||||||
|
pCurrent = pCharList->pHead->pNext;
|
||||||
|
HeapFree(RICHED32_hHeap, 0,pCharList->pHead);
|
||||||
|
|
||||||
|
if(pCharList->nCount == 0)
|
||||||
|
{
|
||||||
|
pCharList->pHead = pCharList->pTail = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pCharList->pHead = pCurrent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return myChar;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CHARLIST_GetNbItems(CHARLIST* pCharList)
|
||||||
|
{
|
||||||
|
return pCharList->nCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CHARLIST_FreeList(CHARLIST* pCharList){
|
||||||
|
while(pCharList->nCount)
|
||||||
|
CHARLIST_Dequeue(pCharList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this function count the number of occurences of a caracter */
|
||||||
|
int CHARLIST_CountChar(CHARLIST* pCharList, char myChar)
|
||||||
|
{
|
||||||
|
CHARLISTENTRY *pCurrent;
|
||||||
|
int nCount = 0;
|
||||||
|
|
||||||
|
for(pCurrent =pCharList->pHead ;pCurrent;pCurrent=pCurrent->pNext)
|
||||||
|
if(pCurrent->myChar == myChar)
|
||||||
|
nCount++;
|
||||||
|
|
||||||
|
return nCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CHARLIST_toBuffer(CHARLIST* pCharList, char* pBuffer, int nBufferSize)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* we add one to store a NULL caracter */
|
||||||
|
if(nBufferSize < pCharList->nCount + 1)
|
||||||
|
return pCharList->nCount;
|
||||||
|
|
||||||
|
for(;pCharList->nCount;pBuffer++)
|
||||||
|
*pBuffer = CHARLIST_Dequeue(pCharList);
|
||||||
|
|
||||||
|
*pBuffer = '\0';
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef _CHARLIST
|
||||||
|
#define _CHARLIST
|
||||||
|
|
||||||
|
typedef struct _tagCHARLISTENTRY
|
||||||
|
{
|
||||||
|
struct _tagCHARLISTENTRY *pNext;
|
||||||
|
char myChar;
|
||||||
|
} CHARLISTENTRY;
|
||||||
|
|
||||||
|
typedef struct _tagCHARLIST
|
||||||
|
{
|
||||||
|
unsigned int nCount; // Entries Count;
|
||||||
|
CHARLISTENTRY *pHead;
|
||||||
|
CHARLISTENTRY *pTail;
|
||||||
|
} CHARLIST;
|
||||||
|
|
||||||
|
|
||||||
|
void CHARLIST_Enqueue( CHARLIST* pCharList, char myChar);
|
||||||
|
void CHARLIST_Push( CHARLIST* pCharList, char myChar);
|
||||||
|
char CHARLIST_Dequeue(CHARLIST* pCharList);
|
||||||
|
int CHARLIST_GetNbItems(CHARLIST* pCharList);
|
||||||
|
void CHARLIST_FreeList(CHARLIST* pCharList);
|
||||||
|
int CHARLIST_CountChar(CHARLIST* pCharList, char myChar);
|
||||||
|
int CHARLIST_toBuffer(CHARLIST* pCharList, char* pBuffer, int nBufferSize);
|
||||||
|
|
||||||
|
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Ritch Edit 32 class extra info
|
||||||
|
*
|
||||||
|
* Copyright 2000 Jean-Clauyde Batista
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __WINE_RICHED32_H
|
||||||
|
#define __WINE_RICHED32_H
|
||||||
|
|
||||||
|
#include "richedit.h"
|
||||||
|
|
||||||
|
extern HMODULE RICHED32_hModule;
|
||||||
|
extern VOID RICHED32_Register (VOID);
|
||||||
|
extern VOID RICHED32_Unregister (VOID);
|
||||||
|
|
||||||
|
#endif /* __WINE_RICHED32_H */
|
|
@ -1,3 +1,5 @@
|
||||||
name riched32
|
name riched32
|
||||||
type win32
|
type win32
|
||||||
init RICHED32_Init
|
init RICHED32_LibMain
|
||||||
|
|
||||||
|
2 stdcall DllGetVersion (ptr) RICHED32_DllGetVersion
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
/*
|
|
||||||
* Win32 Richedit control
|
|
||||||
*
|
|
||||||
* Copyright (C) 2000 Hidenori Takeshima <hidenori@a2.ctktv.ne.jp>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "winbase.h"
|
|
||||||
#include "debugtools.h"
|
|
||||||
/*#include "richedit.h"*/
|
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_DEBUG_CHANNEL(richedit);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
*
|
|
||||||
* RICHED32_Register [Internal]
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static BOOL
|
|
||||||
RICHED32_Register( void )
|
|
||||||
{
|
|
||||||
FIXME( "stub\n" );
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
*
|
|
||||||
* RICHED32_Unregister
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
RICHED32_Unregister( void )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
*
|
|
||||||
* RICHED32_Init [Internal]
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
BOOL WINAPI
|
|
||||||
RICHED32_Init( HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved )
|
|
||||||
{
|
|
||||||
switch ( fdwReason )
|
|
||||||
{
|
|
||||||
case DLL_PROCESS_ATTACH:
|
|
||||||
if ( !RICHED32_Register() )
|
|
||||||
return FALSE;
|
|
||||||
break;
|
|
||||||
case DLL_PROCESS_DETACH:
|
|
||||||
RICHED32_Unregister();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,238 @@
|
||||||
|
/*
|
||||||
|
* RichEdit32 functions
|
||||||
|
*
|
||||||
|
* This module is a simple wrap-arround the edit controls.
|
||||||
|
* At the point, it is good only for application who use the RICHEDIT control to
|
||||||
|
* display RTF text.
|
||||||
|
*
|
||||||
|
* Copyright 2000 by Jean-Claude Batista
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winbase.h"
|
||||||
|
#include "heap.h"
|
||||||
|
#include "debugtools.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "riched32.h"
|
||||||
|
#include "richedit.h"
|
||||||
|
#include "charlist.h"
|
||||||
|
|
||||||
|
#include "rtf.h"
|
||||||
|
#include "rtf2text.h"
|
||||||
|
|
||||||
|
#define ID_EDIT 1
|
||||||
|
|
||||||
|
DEFAULT_DEBUG_CHANNEL(richedit)
|
||||||
|
|
||||||
|
HANDLE RICHED32_hHeap = (HANDLE)NULL;
|
||||||
|
DWORD RICHED32_dwProcessesAttached = 0;
|
||||||
|
/* LPSTR RICHED32_aSubclass = (LPSTR)NULL; */
|
||||||
|
HMODULE RICHED32_hModule = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RICHED32_LibMain [Internal] Initializes the internal 'RICHED32.DLL'.
|
||||||
|
*
|
||||||
|
* PARAMS
|
||||||
|
* hinstDLL [I] handle to the 'dlls' instance
|
||||||
|
* fdwReason [I]
|
||||||
|
* lpvReserved [I] reserverd, must be NULL
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Success: TRUE
|
||||||
|
* Failure: FALSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL WINAPI
|
||||||
|
RICHED32_LibMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (fdwReason) {
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
|
||||||
|
if (RICHED32_dwProcessesAttached == 0) {
|
||||||
|
|
||||||
|
/* This will be wrong for any other process attching in this address-space! */
|
||||||
|
RICHED32_hModule = (HMODULE)hinstDLL;
|
||||||
|
|
||||||
|
/* create private heap */
|
||||||
|
RICHED32_hHeap = HeapCreate (0, 0x10000, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* register the Rich Edit class */
|
||||||
|
RICHED32_Register ();
|
||||||
|
|
||||||
|
RICHED32_dwProcessesAttached++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
RICHED32_dwProcessesAttached--;
|
||||||
|
|
||||||
|
/* unregister all common control classes */
|
||||||
|
RICHED32_Unregister ();
|
||||||
|
|
||||||
|
if (RICHED32_dwProcessesAttached == 0) {
|
||||||
|
HeapDestroy (RICHED32_hHeap);
|
||||||
|
RICHED32_hHeap = (HANDLE)NULL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* DESCRIPTION:
|
||||||
|
* Window procedure of the RichEdit control.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static LRESULT WINAPI RICHED32_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
|
||||||
|
LPARAM lParam)
|
||||||
|
{
|
||||||
|
int RTFToBuffer(char* pBuffer, int nBufferSize);
|
||||||
|
LONG newstyle = 0;
|
||||||
|
LONG style = 0;
|
||||||
|
|
||||||
|
static HWND hwndEdit;
|
||||||
|
static char* rtfBuffer;
|
||||||
|
int rtfBufferSize;
|
||||||
|
|
||||||
|
switch (uMsg)
|
||||||
|
{
|
||||||
|
|
||||||
|
case WM_CREATE :
|
||||||
|
|
||||||
|
/* remove SCROLLBARS from the current window style */
|
||||||
|
newstyle = style = ((LPCREATESTRUCTA) lParam)->style;
|
||||||
|
newstyle &= ~WS_HSCROLL;
|
||||||
|
newstyle &= ~WS_VSCROLL;
|
||||||
|
newstyle &= ~ES_AUTOHSCROLL;
|
||||||
|
newstyle &= ~ES_AUTOVSCROLL;
|
||||||
|
|
||||||
|
hwndEdit = CreateWindowA ("edit", ((LPCREATESTRUCTA) lParam)->lpszName,
|
||||||
|
style, 0, 0, 0, 0,
|
||||||
|
hwnd, (HMENU) ID_EDIT,
|
||||||
|
((LPCREATESTRUCTA) lParam)->hInstance, NULL) ;
|
||||||
|
|
||||||
|
SetWindowLongA(hwnd,GWL_STYLE, newstyle);
|
||||||
|
return 0 ;
|
||||||
|
|
||||||
|
case WM_SETFOCUS :
|
||||||
|
SetFocus (hwndEdit) ;
|
||||||
|
return 0 ;
|
||||||
|
|
||||||
|
case WM_SIZE :
|
||||||
|
MoveWindow (hwndEdit, 0, 0, LOWORD (lParam), HIWORD (lParam), TRUE) ;
|
||||||
|
return 0 ;
|
||||||
|
|
||||||
|
case WM_COMMAND :
|
||||||
|
if (LOWORD (wParam) == ID_EDIT)
|
||||||
|
if (HIWORD (wParam) == EN_ERRSPACE ||
|
||||||
|
HIWORD (wParam) == EN_MAXTEXT)
|
||||||
|
|
||||||
|
MessageBoxA (hwnd, "RichEdit control out of space.",
|
||||||
|
"ERROR", MB_OK | MB_ICONSTOP) ;
|
||||||
|
return 0 ;
|
||||||
|
|
||||||
|
case EM_STREAMIN:
|
||||||
|
|
||||||
|
/* setup the RTF parser */
|
||||||
|
RTFSetEditStream(( EDITSTREAM*)lParam);
|
||||||
|
WriterInit();
|
||||||
|
RTFInit ();
|
||||||
|
BeginFile();
|
||||||
|
|
||||||
|
/* do the parsing */
|
||||||
|
RTFRead ();
|
||||||
|
|
||||||
|
rtfBufferSize = RTFToBuffer(NULL, 0);
|
||||||
|
rtfBuffer = HeapAlloc(RICHED32_hHeap, 0,rtfBufferSize*sizeof(char));
|
||||||
|
if(rtfBuffer)
|
||||||
|
{
|
||||||
|
RTFToBuffer(rtfBuffer, rtfBufferSize);
|
||||||
|
SetWindowTextA(hwndEdit,rtfBuffer);
|
||||||
|
HeapFree(RICHED32_hHeap, 0,rtfBuffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WARN("Not enough memory for a allocating rtfBuffer\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*return SendMessageA( hwndEdit,uMsg,wParam,lParam);*/
|
||||||
|
return DefWindowProcA( hwnd,uMsg,wParam,lParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DllGetVersion [COMCTL32.25]
|
||||||
|
*
|
||||||
|
* Retrieves version information of the 'COMCTL32.DLL'
|
||||||
|
*
|
||||||
|
* PARAMS
|
||||||
|
* pdvi [O] pointer to version information structure.
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Success: S_OK
|
||||||
|
* Failure: E_INVALIDARG
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* Returns version of a comctl32.dll from IE4.01 SP1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
HRESULT WINAPI
|
||||||
|
RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi)
|
||||||
|
{
|
||||||
|
if (pdvi->cbSize != sizeof(DLLVERSIONINFO)) {
|
||||||
|
|
||||||
|
return E_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
pdvi->dwMajorVersion = 4;
|
||||||
|
pdvi->dwMinorVersion = 0;
|
||||||
|
pdvi->dwBuildNumber = 0;
|
||||||
|
pdvi->dwPlatformID = 0;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* DESCRIPTION:
|
||||||
|
* Registers the window class.
|
||||||
|
*
|
||||||
|
* PARAMETER(S):
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* RETURN:
|
||||||
|
* None
|
||||||
|
*/
|
||||||
|
VOID RICHED32_Register(void)
|
||||||
|
{
|
||||||
|
WNDCLASSA wndClass;
|
||||||
|
|
||||||
|
ZeroMemory(&wndClass, sizeof(WNDCLASSA));
|
||||||
|
wndClass.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
|
||||||
|
wndClass.lpfnWndProc = (WNDPROC)RICHED32_WindowProc;
|
||||||
|
wndClass.cbClsExtra = 0;
|
||||||
|
wndClass.cbWndExtra = 0; /*(sizeof(RICHED32_INFO *);*/
|
||||||
|
wndClass.hCursor = LoadCursorA(0, IDC_ARROWA);
|
||||||
|
wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||||
|
wndClass.lpszClassName = RICHEDIT_CLASS10A;//WC_RICHED32A;
|
||||||
|
|
||||||
|
RegisterClassA (&wndClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* DESCRIPTION:
|
||||||
|
* Unregisters the window class.
|
||||||
|
*
|
||||||
|
* PARAMETER(S):
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* RETURN:
|
||||||
|
* None
|
||||||
|
*/
|
||||||
|
VOID RICHED32_Unregister(void)
|
||||||
|
{
|
||||||
|
UnregisterClassA(RICHEDIT_CLASS10A, (HINSTANCE)NULL);
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
||||||
|
void WriterInit ();
|
||||||
|
int BeginFile ();
|
|
@ -0,0 +1,352 @@
|
||||||
|
"nothing",
|
||||||
|
"space",
|
||||||
|
"exclam",
|
||||||
|
"quotedbl",
|
||||||
|
"numbersign",
|
||||||
|
"dollar",
|
||||||
|
"percent",
|
||||||
|
"ampersand",
|
||||||
|
"quoteright",
|
||||||
|
"parenleft",
|
||||||
|
"parenright",
|
||||||
|
"asterisk",
|
||||||
|
"plus",
|
||||||
|
"comma",
|
||||||
|
"hyphen",
|
||||||
|
"period",
|
||||||
|
"slash",
|
||||||
|
"zero",
|
||||||
|
"one",
|
||||||
|
"two",
|
||||||
|
"three",
|
||||||
|
"four",
|
||||||
|
"five",
|
||||||
|
"six",
|
||||||
|
"seven",
|
||||||
|
"eight",
|
||||||
|
"nine",
|
||||||
|
"colon",
|
||||||
|
"semicolon",
|
||||||
|
"less",
|
||||||
|
"equal",
|
||||||
|
"greater",
|
||||||
|
"question",
|
||||||
|
"at",
|
||||||
|
"A",
|
||||||
|
"B",
|
||||||
|
"C",
|
||||||
|
"D",
|
||||||
|
"E",
|
||||||
|
"F",
|
||||||
|
"G",
|
||||||
|
"H",
|
||||||
|
"I",
|
||||||
|
"J",
|
||||||
|
"K",
|
||||||
|
"L",
|
||||||
|
"M",
|
||||||
|
"N",
|
||||||
|
"O",
|
||||||
|
"P",
|
||||||
|
"Q",
|
||||||
|
"R",
|
||||||
|
"S",
|
||||||
|
"T",
|
||||||
|
"U",
|
||||||
|
"V",
|
||||||
|
"W",
|
||||||
|
"X",
|
||||||
|
"Y",
|
||||||
|
"Z",
|
||||||
|
"bracketleft",
|
||||||
|
"backslash",
|
||||||
|
"bracketright",
|
||||||
|
"asciicircum",
|
||||||
|
"underscore",
|
||||||
|
"quoteleft",
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
"d",
|
||||||
|
"e",
|
||||||
|
"f",
|
||||||
|
"g",
|
||||||
|
"h",
|
||||||
|
"i",
|
||||||
|
"j",
|
||||||
|
"k",
|
||||||
|
"l",
|
||||||
|
"m",
|
||||||
|
"n",
|
||||||
|
"o",
|
||||||
|
"p",
|
||||||
|
"q",
|
||||||
|
"r",
|
||||||
|
"s",
|
||||||
|
"t",
|
||||||
|
"u",
|
||||||
|
"v",
|
||||||
|
"w",
|
||||||
|
"x",
|
||||||
|
"y",
|
||||||
|
"z",
|
||||||
|
"braceleft",
|
||||||
|
"bar",
|
||||||
|
"braceright",
|
||||||
|
"asciitilde",
|
||||||
|
"exclamdown",
|
||||||
|
"cent",
|
||||||
|
"sterling",
|
||||||
|
"fraction",
|
||||||
|
"yen",
|
||||||
|
"florin",
|
||||||
|
"section",
|
||||||
|
"currency",
|
||||||
|
"quotedblleft",
|
||||||
|
"guillemotleft",
|
||||||
|
"guilsinglleft",
|
||||||
|
"guilsinglright",
|
||||||
|
"fi",
|
||||||
|
"fl",
|
||||||
|
"endash",
|
||||||
|
"dagger",
|
||||||
|
"daggerdbl",
|
||||||
|
"periodcentered",
|
||||||
|
"paragraph",
|
||||||
|
"bullet",
|
||||||
|
"quotesinglbase",
|
||||||
|
"quotedblbase",
|
||||||
|
"quotedblright",
|
||||||
|
"guillemotright",
|
||||||
|
"ellipsis",
|
||||||
|
"perthousand",
|
||||||
|
"questiondown",
|
||||||
|
"grave",
|
||||||
|
"acute",
|
||||||
|
"circumflex",
|
||||||
|
"tilde",
|
||||||
|
"macron",
|
||||||
|
"breve",
|
||||||
|
"dotaccent",
|
||||||
|
"dieresis",
|
||||||
|
"ring",
|
||||||
|
"cedilla",
|
||||||
|
"hungarumlaut",
|
||||||
|
"ogonek",
|
||||||
|
"caron",
|
||||||
|
"emdash",
|
||||||
|
"AE",
|
||||||
|
"ordfeminine",
|
||||||
|
"Lslash",
|
||||||
|
"Oslash",
|
||||||
|
"OE",
|
||||||
|
"ordmasculine",
|
||||||
|
"ae",
|
||||||
|
"dotlessi",
|
||||||
|
"lslash",
|
||||||
|
"oslash",
|
||||||
|
"oe",
|
||||||
|
"germandbls",
|
||||||
|
"Aacute",
|
||||||
|
"Acircumflex",
|
||||||
|
"Adieresis",
|
||||||
|
"Agrave",
|
||||||
|
"Aring",
|
||||||
|
"Atilde",
|
||||||
|
"Ccedilla",
|
||||||
|
"Eacute",
|
||||||
|
"Ecircumflex",
|
||||||
|
"Edieresis",
|
||||||
|
"Egrave",
|
||||||
|
"Eth",
|
||||||
|
"Iacute",
|
||||||
|
"Icircumflex",
|
||||||
|
"Idieresis",
|
||||||
|
"Igrave",
|
||||||
|
"Ntilde",
|
||||||
|
"Oacute",
|
||||||
|
"Ocircumflex",
|
||||||
|
"Odieresis",
|
||||||
|
"Ograve",
|
||||||
|
"Otilde",
|
||||||
|
"Scaron",
|
||||||
|
"Thorn",
|
||||||
|
"Uacute",
|
||||||
|
"Ucircumflex",
|
||||||
|
"Udieresis",
|
||||||
|
"Ugrave",
|
||||||
|
"Yacute",
|
||||||
|
"Ydieresis",
|
||||||
|
"aacute",
|
||||||
|
"acircumflex",
|
||||||
|
"adieresis",
|
||||||
|
"agrave",
|
||||||
|
"aring",
|
||||||
|
"atilde",
|
||||||
|
"brokenbar",
|
||||||
|
"ccedilla",
|
||||||
|
"copyright",
|
||||||
|
"degree",
|
||||||
|
"divide",
|
||||||
|
"eacute",
|
||||||
|
"ecircumflex",
|
||||||
|
"edieresis",
|
||||||
|
"egrave",
|
||||||
|
"eth",
|
||||||
|
"iacute",
|
||||||
|
"icircumflex",
|
||||||
|
"idieresis",
|
||||||
|
"igrave",
|
||||||
|
"logicalnot",
|
||||||
|
"minus",
|
||||||
|
"multiply",
|
||||||
|
"ntilde",
|
||||||
|
"oacute",
|
||||||
|
"ocircumflex",
|
||||||
|
"odieresis",
|
||||||
|
"ograve",
|
||||||
|
"onehalf",
|
||||||
|
"onequarter",
|
||||||
|
"onesuperior",
|
||||||
|
"otilde",
|
||||||
|
"plusminus",
|
||||||
|
"registered",
|
||||||
|
"thorn",
|
||||||
|
"threequarters",
|
||||||
|
"threesuperior",
|
||||||
|
"trademark",
|
||||||
|
"twosuperior",
|
||||||
|
"uacute",
|
||||||
|
"ucircumflex",
|
||||||
|
"udieresis",
|
||||||
|
"ugrave",
|
||||||
|
"yacute",
|
||||||
|
"ydieresis",
|
||||||
|
"Alpha",
|
||||||
|
"Beta",
|
||||||
|
"Chi",
|
||||||
|
"Delta",
|
||||||
|
"Epsilon",
|
||||||
|
"Phi",
|
||||||
|
"Gamma",
|
||||||
|
"Eta",
|
||||||
|
"Iota",
|
||||||
|
"Kappa",
|
||||||
|
"Lambda",
|
||||||
|
"Mu",
|
||||||
|
"Nu",
|
||||||
|
"Omicron",
|
||||||
|
"Pi",
|
||||||
|
"Theta",
|
||||||
|
"Rho",
|
||||||
|
"Sigma",
|
||||||
|
"Tau",
|
||||||
|
"Upsilon",
|
||||||
|
"varUpsilon",
|
||||||
|
"Omega",
|
||||||
|
"Xi",
|
||||||
|
"Psi",
|
||||||
|
"Zeta",
|
||||||
|
"alpha",
|
||||||
|
"beta",
|
||||||
|
"chi",
|
||||||
|
"delta",
|
||||||
|
"epsilon",
|
||||||
|
"phi",
|
||||||
|
"varphi",
|
||||||
|
"gamma",
|
||||||
|
"eta",
|
||||||
|
"iota",
|
||||||
|
"kappa",
|
||||||
|
"lambda",
|
||||||
|
"mu",
|
||||||
|
"nu",
|
||||||
|
"omicron",
|
||||||
|
"pi",
|
||||||
|
"varpi",
|
||||||
|
"theta",
|
||||||
|
"vartheta",
|
||||||
|
"rho",
|
||||||
|
"sigma",
|
||||||
|
"varsigma",
|
||||||
|
"tau",
|
||||||
|
"upsilon",
|
||||||
|
"omega",
|
||||||
|
"xi",
|
||||||
|
"psi",
|
||||||
|
"zeta",
|
||||||
|
"nobrkspace",
|
||||||
|
"nobrkhyphen",
|
||||||
|
"lessequal",
|
||||||
|
"greaterequal",
|
||||||
|
"infinity",
|
||||||
|
"integral",
|
||||||
|
"notequal",
|
||||||
|
"radical",
|
||||||
|
"radicalex",
|
||||||
|
"approxequal",
|
||||||
|
"apple",
|
||||||
|
"partialdiff",
|
||||||
|
"opthyphen",
|
||||||
|
"formula",
|
||||||
|
"lozenge",
|
||||||
|
"universal",
|
||||||
|
"existential",
|
||||||
|
"suchthat",
|
||||||
|
"congruent",
|
||||||
|
"therefore",
|
||||||
|
"perpendicular",
|
||||||
|
"minute",
|
||||||
|
"club",
|
||||||
|
"diamond",
|
||||||
|
"heart",
|
||||||
|
"spade",
|
||||||
|
"arrowboth",
|
||||||
|
"arrowleft",
|
||||||
|
"arrowup",
|
||||||
|
"arrowright",
|
||||||
|
"arrowdown",
|
||||||
|
"second",
|
||||||
|
"proportional",
|
||||||
|
"equivalence",
|
||||||
|
"arrowvertex",
|
||||||
|
"arrowhorizex",
|
||||||
|
"carriagereturn",
|
||||||
|
"aleph",
|
||||||
|
"Ifraktur",
|
||||||
|
"Rfraktur",
|
||||||
|
"weierstrass",
|
||||||
|
"circlemultiply",
|
||||||
|
"circleplus",
|
||||||
|
"emptyset",
|
||||||
|
"intersection",
|
||||||
|
"union",
|
||||||
|
"propersuperset",
|
||||||
|
"reflexsuperset",
|
||||||
|
"notsubset",
|
||||||
|
"propersubset",
|
||||||
|
"reflexsubset",
|
||||||
|
"element",
|
||||||
|
"notelement",
|
||||||
|
"angle",
|
||||||
|
"gradient",
|
||||||
|
"product",
|
||||||
|
"logicaland",
|
||||||
|
"logicalor",
|
||||||
|
"arrowdblboth",
|
||||||
|
"arrowdblleft",
|
||||||
|
"arrowdblup",
|
||||||
|
"arrowdblright",
|
||||||
|
"arrowdbldown",
|
||||||
|
"angleleft",
|
||||||
|
"registersans",
|
||||||
|
"copyrightsans",
|
||||||
|
"trademarksans",
|
||||||
|
"angleright",
|
||||||
|
"mathplus",
|
||||||
|
"mathminus",
|
||||||
|
"mathasterisk",
|
||||||
|
"mathnumbersign",
|
||||||
|
"dotmath",
|
||||||
|
"mathequal",
|
||||||
|
"mathtilde",
|
|
@ -0,0 +1,276 @@
|
||||||
|
/*
|
||||||
|
* text-writer -- RTF-to-text translation writer code.
|
||||||
|
*
|
||||||
|
* Read RTF input, write text of document (text extraction).
|
||||||
|
*
|
||||||
|
* Wrapper must call WriterInit() once before processing any files,
|
||||||
|
* then set up input and call BeginFile() for each input file.
|
||||||
|
*
|
||||||
|
* This installs callbacks for the text and control token classes.
|
||||||
|
* The control class is necessary so that special characters such as
|
||||||
|
* \par, \tab, \sect, etc. can be converted.
|
||||||
|
*
|
||||||
|
* It's problematic what to do with text in headers and footers, and
|
||||||
|
* what to do about tables.
|
||||||
|
*
|
||||||
|
* This really is quite a stupid program, for instance, it could keep
|
||||||
|
* track of the current leader character and dump that out when a tab
|
||||||
|
* is encountered.
|
||||||
|
*
|
||||||
|
* 04 Feb 91 Paul DuBois dubois@primate.wisc.edu
|
||||||
|
*
|
||||||
|
* This software may be redistributed without restriction and used for
|
||||||
|
* any purpose whatsoever.
|
||||||
|
*
|
||||||
|
* 04 Feb 91
|
||||||
|
* -Created.
|
||||||
|
* 27 Feb 91
|
||||||
|
* - Updated for distribution 1.05.
|
||||||
|
* 13 Jul 93
|
||||||
|
* - Updated to compile under THINK C 6.0.
|
||||||
|
* 31 Aug 93
|
||||||
|
* - Added Mike Sendall's entries for Macintosh char map.
|
||||||
|
* 07 Sep 93
|
||||||
|
* - Uses charset map and output sequence map for character translation.
|
||||||
|
* 11 Mar 94
|
||||||
|
* - Updated for 1.10 distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
|
||||||
|
# include "rtf.h"
|
||||||
|
# include "rtf2text.h"
|
||||||
|
# include "charlist.h"
|
||||||
|
|
||||||
|
static void TextClass ();
|
||||||
|
static void ControlClass ();
|
||||||
|
static void Destination ();
|
||||||
|
static void SpecialChar ();
|
||||||
|
static void PutStdChar ();
|
||||||
|
static void PutLitChar ();
|
||||||
|
static void PutLitStr ();
|
||||||
|
|
||||||
|
static char *outMap[rtfSC_MaxChar];
|
||||||
|
|
||||||
|
static CHARLIST charlist = {0, NULL, NULL};
|
||||||
|
|
||||||
|
int RTFToBuffer(char* pBuffer, int nBufferSize);
|
||||||
|
int RTFToBuffer(char* pBuffer, int nBufferSize)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* check if the buffer is big enough to hold all characters */
|
||||||
|
/* we require one more for the '\0' */
|
||||||
|
|
||||||
|
|
||||||
|
if(nBufferSize < charlist.nCount + 1) {
|
||||||
|
return charlist.nCount + CHARLIST_CountChar(&charlist, '\n') + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(charlist.nCount)
|
||||||
|
{
|
||||||
|
*pBuffer = CHARLIST_Dequeue(&charlist);
|
||||||
|
if(*pBuffer=='\n')
|
||||||
|
{
|
||||||
|
*pBuffer = '\r';
|
||||||
|
pBuffer++;
|
||||||
|
*pBuffer = '\n';
|
||||||
|
}
|
||||||
|
pBuffer++;
|
||||||
|
}
|
||||||
|
*pBuffer = '\0';
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize the writer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
WriterInit ()
|
||||||
|
{
|
||||||
|
RTFReadOutputMap (outMap,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
BeginFile ()
|
||||||
|
{
|
||||||
|
/* install class callbacks */
|
||||||
|
|
||||||
|
RTFSetClassCallback (rtfText, TextClass);
|
||||||
|
RTFSetClassCallback (rtfControl, ControlClass);
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write out a character. rtfMajor contains the input character, rtfMinor
|
||||||
|
* contains the corresponding standard character code.
|
||||||
|
*
|
||||||
|
* If the input character isn't in the charset map, try to print some
|
||||||
|
* representation of it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
TextClass ()
|
||||||
|
{
|
||||||
|
char buf[rtfBufSiz];
|
||||||
|
|
||||||
|
if (rtfMinor != rtfSC_nothing)
|
||||||
|
PutStdChar (rtfMinor);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rtfMajor < 128) /* in ASCII range */
|
||||||
|
sprintf (buf, "[[%c]]", rtfMajor);
|
||||||
|
else
|
||||||
|
sprintf (buf, "[[\\'%02x]]", rtfMajor);
|
||||||
|
PutLitStr (buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
ControlClass ()
|
||||||
|
{
|
||||||
|
switch (rtfMajor)
|
||||||
|
{
|
||||||
|
case rtfDestination:
|
||||||
|
Destination ();
|
||||||
|
break;
|
||||||
|
case rtfSpecialChar:
|
||||||
|
SpecialChar ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function notices destinations that should be ignored
|
||||||
|
* and skips to their ends. This keeps, for instance, picture
|
||||||
|
* data from being considered as plain text.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
Destination ()
|
||||||
|
{
|
||||||
|
switch (rtfMinor)
|
||||||
|
{
|
||||||
|
case rtfPict:
|
||||||
|
case rtfFNContSep:
|
||||||
|
case rtfFNContNotice:
|
||||||
|
case rtfInfo:
|
||||||
|
case rtfIndexRange:
|
||||||
|
case rtfITitle:
|
||||||
|
case rtfISubject:
|
||||||
|
case rtfIAuthor:
|
||||||
|
case rtfIOperator:
|
||||||
|
case rtfIKeywords:
|
||||||
|
case rtfIComment:
|
||||||
|
case rtfIVersion:
|
||||||
|
case rtfIDoccomm:
|
||||||
|
RTFSkipGroup ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The reason these use the rtfSC_xxx thingies instead of just writing
|
||||||
|
* out ' ', '-', '"', etc., is so that the mapping for these characters
|
||||||
|
* can be controlled by the text-map file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void SpecialChar ()
|
||||||
|
{
|
||||||
|
switch (rtfMinor)
|
||||||
|
{
|
||||||
|
case rtfPage:
|
||||||
|
case rtfSect:
|
||||||
|
case rtfRow:
|
||||||
|
case rtfLine:
|
||||||
|
case rtfPar:
|
||||||
|
PutLitChar ('\n');
|
||||||
|
break;
|
||||||
|
case rtfCell:
|
||||||
|
PutStdChar (rtfSC_space); /* make sure cells are separated */
|
||||||
|
break;
|
||||||
|
case rtfNoBrkSpace:
|
||||||
|
PutStdChar (rtfSC_nobrkspace);
|
||||||
|
break;
|
||||||
|
case rtfTab:
|
||||||
|
PutLitChar ('\t');
|
||||||
|
break;
|
||||||
|
case rtfNoBrkHyphen:
|
||||||
|
PutStdChar (rtfSC_nobrkhyphen);
|
||||||
|
break;
|
||||||
|
case rtfBullet:
|
||||||
|
PutStdChar (rtfSC_bullet);
|
||||||
|
break;
|
||||||
|
case rtfEmDash:
|
||||||
|
PutStdChar (rtfSC_emdash);
|
||||||
|
break;
|
||||||
|
case rtfEnDash:
|
||||||
|
PutStdChar (rtfSC_endash);
|
||||||
|
break;
|
||||||
|
case rtfLQuote:
|
||||||
|
PutStdChar (rtfSC_quoteleft);
|
||||||
|
break;
|
||||||
|
case rtfRQuote:
|
||||||
|
PutStdChar (rtfSC_quoteright);
|
||||||
|
break;
|
||||||
|
case rtfLDblQuote:
|
||||||
|
PutStdChar (rtfSC_quotedblleft);
|
||||||
|
break;
|
||||||
|
case rtfRDblQuote:
|
||||||
|
PutStdChar (rtfSC_quotedblright);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Eventually this should keep track of the destination of the
|
||||||
|
* current state and only write text when in the initial state.
|
||||||
|
*
|
||||||
|
* If the output sequence is unspecified in the output map, write
|
||||||
|
* the character's standard name instead. This makes map deficiencies
|
||||||
|
* obvious and provides incentive to fix it. :-)
|
||||||
|
*/
|
||||||
|
|
||||||
|
void PutStdChar (int stdCode)
|
||||||
|
{
|
||||||
|
|
||||||
|
char *oStr = (char *) NULL;
|
||||||
|
char buf[rtfBufSiz];
|
||||||
|
|
||||||
|
/* if (stdCode == rtfSC_nothing)
|
||||||
|
RTFPanic ("Unknown character code, logic error\n");
|
||||||
|
*/
|
||||||
|
oStr = outMap[stdCode];
|
||||||
|
if (oStr == (char *) NULL) /* no output sequence in map */
|
||||||
|
{
|
||||||
|
sprintf (buf, "[[%s]]", RTFStdCharName (stdCode));
|
||||||
|
oStr = buf;
|
||||||
|
}
|
||||||
|
PutLitStr (oStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PutLitChar (int c)
|
||||||
|
{
|
||||||
|
CHARLIST_Enqueue(&charlist, (char) c);
|
||||||
|
/* fputc (c, ostream); */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void PutLitStr (char *s)
|
||||||
|
{
|
||||||
|
for(;*s;s++)
|
||||||
|
{
|
||||||
|
CHARLIST_Enqueue(&charlist, *s);
|
||||||
|
}
|
||||||
|
/* fputs (s, ostream); */
|
||||||
|
}
|
|
@ -0,0 +1,172 @@
|
||||||
|
/*
|
||||||
|
* Output sequence map for rtf2text
|
||||||
|
*
|
||||||
|
* Field 1 is the standard character name. Field 2 is the output sequence
|
||||||
|
* to produce for that character.
|
||||||
|
*
|
||||||
|
* The output sequence is simply a string of characters. If it contains
|
||||||
|
* whitespace, it may be quoted. If it contains quotes, it may be quoted
|
||||||
|
* with a different quote character.
|
||||||
|
*
|
||||||
|
* characters in ASCII range (32-127
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *text_map[] = {
|
||||||
|
"space" ," ",
|
||||||
|
"exclam" ,"!",
|
||||||
|
"quotedbl" ,"\"",
|
||||||
|
"numbersign" ,"#",
|
||||||
|
"dollar" ,"$",
|
||||||
|
"percent" ,"%",
|
||||||
|
"ampersand" ,"&",
|
||||||
|
"quoteright" ,"'",
|
||||||
|
"parenleft" ,"(",
|
||||||
|
"parenright" ,")",
|
||||||
|
"asterisk" ,"*",
|
||||||
|
"plus" ,"+",
|
||||||
|
"comma" ,",",
|
||||||
|
"hyphen" ,"-",
|
||||||
|
"period" ,".",
|
||||||
|
"slash" ,"/",
|
||||||
|
"zero" ,"0",
|
||||||
|
"one" ,"1",
|
||||||
|
"two" ,"2",
|
||||||
|
"three" ,"3",
|
||||||
|
"four" ,"4",
|
||||||
|
"five" ,"5",
|
||||||
|
"six" ,"6",
|
||||||
|
"seven" ,"7",
|
||||||
|
"eight" ,"8",
|
||||||
|
"nine" ,"9",
|
||||||
|
"colon" ,":",
|
||||||
|
"semicolon" ,";",
|
||||||
|
"less" ,"<",
|
||||||
|
"equal" ,"=",
|
||||||
|
"greater" ,">",
|
||||||
|
"question" ,"?",
|
||||||
|
"at" ,"@",
|
||||||
|
"A" ,"A",
|
||||||
|
"B" ,"B",
|
||||||
|
"C" ,"C",
|
||||||
|
"D" ,"D",
|
||||||
|
"E" ,"E",
|
||||||
|
"F" ,"F",
|
||||||
|
"G" ,"G",
|
||||||
|
"H" ,"H",
|
||||||
|
"I" ,"I",
|
||||||
|
"J" ,"J",
|
||||||
|
"K" ,"K",
|
||||||
|
"L" ,"L",
|
||||||
|
"M" ,"M",
|
||||||
|
"N" ,"N",
|
||||||
|
"O" ,"O",
|
||||||
|
"P" ,"P",
|
||||||
|
"Q" ,"Q",
|
||||||
|
"R" ,"R",
|
||||||
|
"S" ,"S",
|
||||||
|
"T" ,"T",
|
||||||
|
"U" ,"U",
|
||||||
|
"V" ,"V",
|
||||||
|
"W" ,"W",
|
||||||
|
"X" ,"X",
|
||||||
|
"Y" ,"Y",
|
||||||
|
"Z" ,"Z",
|
||||||
|
"bracketleft" ,"[",
|
||||||
|
"backslash" ,"\\",
|
||||||
|
"bracketright" ,"]",
|
||||||
|
"asciicircum" ,"^",
|
||||||
|
"underscore" ,"_",
|
||||||
|
"quoteleft" ,"`",
|
||||||
|
"a" ,"a",
|
||||||
|
"b" ,"b",
|
||||||
|
"c" ,"c",
|
||||||
|
"d" ,"d",
|
||||||
|
"e" ,"e",
|
||||||
|
"f" ,"f",
|
||||||
|
"g" ,"g",
|
||||||
|
"h" ,"h",
|
||||||
|
"i" ,"i",
|
||||||
|
"j" ,"j",
|
||||||
|
"k" ,"k",
|
||||||
|
"l" ,"l",
|
||||||
|
"m" ,"m",
|
||||||
|
"n" ,"n",
|
||||||
|
"o" ,"o",
|
||||||
|
"p" ,"p",
|
||||||
|
"q" ,"q",
|
||||||
|
"r" ,"r",
|
||||||
|
"s" ,"s",
|
||||||
|
"t" ,"t",
|
||||||
|
"u" ,"u",
|
||||||
|
"v" ,"v",
|
||||||
|
"w" ,"w",
|
||||||
|
"x" ,"x",
|
||||||
|
"y" ,"y",
|
||||||
|
"z" ,"z",
|
||||||
|
"braceleft" ,"{",
|
||||||
|
"bar" ,"|",
|
||||||
|
"braceright" ,"}",
|
||||||
|
"asciitilde" ,"~",
|
||||||
|
"AE" ,"AE",
|
||||||
|
"OE" ,"OE",
|
||||||
|
"acute" ,"'",
|
||||||
|
"ae" ,"ae",
|
||||||
|
"angleleft" ,"<",
|
||||||
|
"angleright" ,">",
|
||||||
|
"arrowboth" ,"<->",
|
||||||
|
"arrowdblboth" ,"<=>",
|
||||||
|
"arrowdblleft" ,"<=",
|
||||||
|
"arrowdblright" ,"=>",
|
||||||
|
"arrowleft" ,"<-",
|
||||||
|
"arrowright" ,"->",
|
||||||
|
"bullet" ,"o",
|
||||||
|
"cent" ,"cent",
|
||||||
|
"circumflex" ,"^",
|
||||||
|
"copyright" ,"(c)",
|
||||||
|
"copyrightsans" ,"(c)",
|
||||||
|
"degree" ,"deg.",
|
||||||
|
"divide" ,"/",
|
||||||
|
"dotlessi" ,"i",
|
||||||
|
"ellipsis" ,"...",
|
||||||
|
"emdash" ,"--",
|
||||||
|
"endash" ,"-",
|
||||||
|
"fi" ,"fi",
|
||||||
|
"fl" ,"fl",
|
||||||
|
"fraction" ,"/",
|
||||||
|
"germandbls" ,"ss",
|
||||||
|
"grave" ,"`",
|
||||||
|
"greaterequal" ,">=",
|
||||||
|
"guillemotleft" ,"<<",
|
||||||
|
"guillemotright" ,">>",
|
||||||
|
"guilsinglleft" ,"<",
|
||||||
|
"guilsinglright" ,">",
|
||||||
|
"lessequal" ,"<=",
|
||||||
|
"logicalnot" ,"~",
|
||||||
|
"mathasterisk" ,"*",
|
||||||
|
"mathequal" ,"=",
|
||||||
|
"mathminus" ,"-",
|
||||||
|
"mathnumbersign" ,"#",
|
||||||
|
"mathplus" ,"+",
|
||||||
|
"mathtilde" ,"~",
|
||||||
|
"minus" ,"-",
|
||||||
|
"mu" ,"u",
|
||||||
|
"multiply" ,"x",
|
||||||
|
"nobrkhyphen" ,"-",
|
||||||
|
"nobrkspace" ," ",
|
||||||
|
"notequal" ,"!=",
|
||||||
|
"oe" ,"oe",
|
||||||
|
"onehalf" ,"1/2",
|
||||||
|
"onequarter" ,"1/4",
|
||||||
|
"periodcentered" ,".",
|
||||||
|
"plusminus" ,"+/-",
|
||||||
|
"quotedblbase" ,",,",
|
||||||
|
"quotedblleft" ,"\"",
|
||||||
|
"quotedblright" ,"\"",
|
||||||
|
"quotesinglbase" ,",",
|
||||||
|
"registered" ,"reg.",
|
||||||
|
"registersans" ,"reg.",
|
||||||
|
"threequarters" ,"3/4",
|
||||||
|
"tilde" ,"~",
|
||||||
|
"trademark" ,"(TM)",
|
||||||
|
"trademarksans" ,"(TM)"
|
||||||
|
};
|
|
@ -0,0 +1,82 @@
|
||||||
|
#ifndef __WINE_RICHEDIT_H
|
||||||
|
#define __WINE_RICHEDIT_H
|
||||||
|
|
||||||
|
#include "windef.h"
|
||||||
|
#include "pshpack4.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _RICHEDIT_VER
|
||||||
|
#define _RICHEDIT_VER 0x0210
|
||||||
|
#endif /* _RICHEDIT_VER */
|
||||||
|
|
||||||
|
#define cchTextLimitDefault 0x7fff
|
||||||
|
|
||||||
|
#define RICHEDIT_CLASS20A "RichEdit20A"
|
||||||
|
#define RICHEDIT_CLASS20W L"RichEdit20W"
|
||||||
|
#define RICHEDIT_CLASS10A "RICHEDIT"
|
||||||
|
|
||||||
|
#if (_RICHEDIT_VER >= 0x0200 )
|
||||||
|
#define RICHEDIT_CLASS WINELIB_NAME_AW(RICHEDIT_CLASS20)
|
||||||
|
#else
|
||||||
|
#define RICHEDIT_CLASS RICHEDIT_CLASS10A
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define EM_CANPASTE (WM_USER + 50)
|
||||||
|
#define EM_DISPLAYBAND (WM_USER + 51)
|
||||||
|
#define EM_EXGETSEL (WM_USER + 52)
|
||||||
|
#define EM_EXLIMITTEXT (WM_USER + 53)
|
||||||
|
#define EM_EXLINEFROMCHAR (WM_USER + 54)
|
||||||
|
#define EM_EXSETSEL (WM_USER + 55)
|
||||||
|
#define EM_FINDTEXT (WM_USER + 56)
|
||||||
|
#define EM_FORMATRANGE (WM_USER + 57)
|
||||||
|
#define EM_GETCHARFORMAT (WM_USER + 58)
|
||||||
|
#define EM_GETEVENTMASK (WM_USER + 59)
|
||||||
|
#define EM_GETOLEINTERFACE (WM_USER + 60)
|
||||||
|
#define EM_GETPARAFORMAT (WM_USER + 61)
|
||||||
|
#define EM_GETSELTEXT (WM_USER + 62)
|
||||||
|
#define EM_HIDESELECTION (WM_USER + 63)
|
||||||
|
#define EM_PASTESPECIAL (WM_USER + 64)
|
||||||
|
#define EM_REQUESTRESIZE (WM_USER + 65)
|
||||||
|
#define EM_SELECTIONTYPE (WM_USER + 66)
|
||||||
|
#define EM_SETBKGNDCOLOR (WM_USER + 67)
|
||||||
|
#define EM_SETCHARFORMAT (WM_USER + 68)
|
||||||
|
#define EM_SETEVENTMASK (WM_USER + 69)
|
||||||
|
#define EM_SETOLECALLBACK (WM_USER + 70)
|
||||||
|
#define EM_SETPARAFORMAT (WM_USER + 71)
|
||||||
|
#define EM_SETTARGETDEVICE (WM_USER + 72)
|
||||||
|
#define EM_STREAMIN (WM_USER + 73)
|
||||||
|
#define EM_STREAMOUT (WM_USER + 74)
|
||||||
|
#define EM_GETTEXTRANGE (WM_USER + 75)
|
||||||
|
#define EM_FINDWORDBREAK (WM_USER + 76)
|
||||||
|
#define EM_SETOPTIONS (WM_USER + 77)
|
||||||
|
#define EM_GETOPTIONS (WM_USER + 78)
|
||||||
|
#define EM_FINDTEXTEX (WM_USER + 79)
|
||||||
|
#define EM_GETWORDBREAKPROCEX (WM_USER + 80)
|
||||||
|
#define EM_SETWORDBREAKPROCEX (WM_USER + 81)
|
||||||
|
|
||||||
|
typedef DWORD (CALLBACK* EDITSTREAMCALLBACK)( DWORD, LPBYTE, LONG, LONG );
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DWORD dwCookie;
|
||||||
|
DWORD dwError;
|
||||||
|
EDITSTREAMCALLBACK pfnCallback;
|
||||||
|
} EDITSTREAM;
|
||||||
|
|
||||||
|
#define SF_TEXT 0x0001
|
||||||
|
#define SF_RTF 0x0002
|
||||||
|
#define SF_RTFNOOBJS 0x0003
|
||||||
|
#define SF_TEXTIZED 0x0004
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "poppack.h"
|
||||||
|
|
||||||
|
#endif /* __WINE_RICHEDIT_H */
|
Loading…
Reference in New Issue