www.pudn.com > Flash4player.rar > EDITTEXT.H
/****************************************************************************
CONFIDENTIAL AND PROPRIETARY INFORMATION. The entire contents of this file
is Copyright © Macromedia, Inc. 1993-1998, All Rights Reserved. This
document is an unpublished trade secret of Macromedia, Inc. and may not be
viewed, copied or distributed by anyone, without the specific, written
permission of Macromedia, Inc.
****************************************************************************/
// The object is responsible for generating edges and colors in a format
// that the scan converter can use.
#ifndef EDITTEXT_INCLUDED
#define EDITTEXT_INCLUDED
#define editTextNewline '\r'
#define editTextSoftNewline '\n'
#ifdef EDITTEXT
struct SObject;
struct SCharacter;
struct STransform;
class SPlayer;
enum {
editTextGetScroll,
editTextSetScroll,
editTextGetMaxScroll
};
int WideStrLen(const U16 *buf);
void WideStrCopy(U16 *dst, const U16 *src);
class EditText
{
public:
// next is pointer to next EditText in update list
EditText *next;
enum {
PASSWORD_CHAR = '*'
};
EditText(SObject* obj);
~EditText();
/*! HandleKeyDown processes keys for the edit text fields. The NativePlayerWnd
gets passed in so the edit text can request pastes and copies to the
clipboard.
*/
void HandleKeyDown( int key, int modifiers, NativePlayerWnd* native );
char * GetBuffer();
void SetBuffer(char *text);
void DoMouse(SPOINT *pt, BOOL mouseIsDown);
void ClearSelection();
BOOL IsSelected() { return m_selectionStart != m_selectionEnd; }
enum {
kCutEnabled = 1,
kCopyEnabled = 2,
kPasteEnabled = 4,
kClearEnabled = 8,
kSelectAllEnabled = 16
};
void GetEnabledCommands(int& flags);
BOOL Draw(STransform* x, BOOL buildEdges);
BOOL IsFontIncluded() { return (m_flags & seditTextFlagsUseOutlines) != 0; }
U16 *m_buffer;
char *m_variable;
char *m_initialText;
int m_length;
int m_selectionStart, m_selectionEnd;
int m_hscroll, m_vscroll;
MATRIX m_mat;
int *m_lineX;
BOOL m_mouseIsDown;
S32 m_clickTime;
SPOINT m_mousePosition;
BOOL m_selecting;
U16 m_flags;
int m_maxLength;
int m_height;
int *m_lineStarts;
int m_numLines;
BOOL m_atLineEnd;
SObject* m_obj;
SCharacter *m_character;
BOOL m_drawn;
BOOL m_doFindCursor;
int m_heldLeadByte;
int m_align;
static BOOL m_insertMode;
SRECT devBounds;
int devAscent;
int devLineSpacing;
int *devCharWidths;
void Expand(int size);
void Insert(U16 ch) { InsertWideChars(&ch, 1); }
void Insert(char *s, int len);
void InsertWideChars(U16 *s, int len);
void Backward(int wholeWord, int extend);
void Forward(int wholeWord, int extend);
void Backspace();
void Delete();
void DeleteSelection();
void FindCursor(SRECT* devBounds, int *devCharWidths);
void CopyToClipboard( NativePlayerWnd* );
void PasteFromClipboard( NativePlayerWnd* );
int FindLineStart(int pos) { return m_lineStarts[FindLineNumber(pos)]; }
int FindLineEnd(int pos);
int FindLineNumber(int pos);
void AutoScroll();
void CalculateLineStarts(int *devCharWidths, int width, int indent);
struct FontDesc {
char fontName[256];
int height;
BOOL boldFlag;
BOOL italicFlag;
BOOL japaneseFlag;
SCharacter* font;
S32 codeOffset;
};
void GetFontDesc(FontDesc& fontDesc);
BOOL IsLeadByte(U8 ch);
BOOL IsMultiByte();
U16 *MBCSToWide(char *buffer, int index, int count);
char *WideToMBCS(U16 *buffer, int index, int count);
U16 FindGlyph(U16 targetCode, FontDesc& fontDesc);
U16 *FindGlyphs(U16 *buffer, int length, FontDesc& fontDesc);
int CalcVisibleLines();
int CalcMaxVScroll();
void UpdateFromVariable();
BOOL BreakEnglish(U16 ch1, U16 ch2);
BOOL LineBreakOK(U16 ch1, U16 ch2);
BOOL LineBreakOK_Index(int index);
};
// The SaveFocus object is used to save and restore the current focus.
struct SaveFocus
{
char *variable;
int depth;
int selectionStart;
int selectionEnd;
BOOL selecting;
SaveFocus();
void Save(SPlayer* splayer);
void Clear();
};
#endif // EDITTEXT
#endif // EDITTEXT_INCLUDED