FRX SDK Documentation 2025 SP0
Loading...
Searching...
No Matches
TextEditorLine.h
Go to the documentation of this file.
1#pragma once
2
3//
4// (C) Copyright 2005-2024 by Graebert GmbH.
5//
6// Permission to use, copy, modify, and distribute this software in
7// object code form for any purpose and without fee is hereby granted,
8// provided that the above copyright notice appears in all copies and
9// that both that copyright notice and the limited warranty and
10// restricted rights notice below appear in all supporting
11// documentation.
12//
13// GRAEBERT PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
14// GRAEBERT SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
15// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. GRAEBERT GMBH
16// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
17// UNINTERRUPTED OR ERROR FREE.
18
19class AcGePoint2d;
20class AcGePoint3d;
21template < typename Param1, typename Param2 > class StrTraitMFC_DLL;
22class TextEditor;
31
33{
34public:
36{
37};
38
40{
41};
42
44{
45};
46
48{
49};
50
54
56{
57};
58
60{
61};
62
63private:
64 static double const kAscentFraction;
65 static double const kAscentPart;
66 static double const kDescentFraction;
67 static double const kDescentPart;
68 static double const kHeightFactor;
69 static double const kInterlineFactor;
70 static double const kLineFactor;
71 static double const kSumOfParts;
72 static double const kTotalFactor;
73
74public:
77 bool adjust_valid(void)const ;
78 bool change_case(bool,int,int);
79 bool end_of_column(void)const ;
80 bool end_of_paragraph(void)const ;
81 bool find_break(int,int &);
82 bool graphics_valid(void)const ;
83 bool in_bounds( TextEditorBounds const &,int,int);
84 bool is_empty(void)const ;
85 bool metrics_valid(void)const ;
86 bool numbering_overflow(void)const ;
87 bool numbering_restart(int)const ;
88 bool start_of_column(void)const ;
89 bool start_of_paragraph(void)const ;
90 bool traits_valid(void)const ;
91 bool write_dtext( CStringA &,int,int, TextEditorOutputState &)const ;
93 bool write_dtext( CStringW &,int,int, TextEditorOutputState &)const ;
95 CStringW const & string(void)const ;
96 AcGePoint2d const & extents(void)const ;
97 AcGePoint2d const & offset(void)const ;
100 AcGePoint3d const & draw_pos(void)const ;
105 TextEditorLine * clone(int,int)const ;
106 TextEditorLine * next(void)const ;
107 TextEditorLine * prev(void)const ;
108 double GetShdrawXMin(void)const ;
109 double GetShdrawYMax(void)const ;
110 double GetShdrawYMin(void)const ;
111 double align_factor(void)const ;
112 double ascent(void)const ;
113 double baseline_adjustment(void)const ;
114 double container_width(void)const ;
115 double descent(void)const ;
116 double edge_offset(void)const ;
117 double end_indent(void)const ;
119 double height_scale(void)const ;
120 double local_flow_adjustment(int,double)const ;
121 double size(void)const ;
122 double spacing(double &,double &)const ;
123 double spacing(int)const ;
124 double start_indent(void)const ;
125 double trail(void)const ;
126 double width_scale(void)const ;
127 int container_index(void)const ;
128 int end_status(void)const ;
130 int find_end_of_word(int,int);
131 int index(void)const ;
132 int length(void)const ;
133 int move_index(int,int);
134 int numbering_value(int)const ;
135 int para_attributes_index(void)const ;
136 int start_status(void)const ;
139 virtual ~TextEditorLine(void);
140 virtual void erase(void);
141 void adjust_dtext(void);
142 void adjust_mtext(void);
143 void align_dtext(void);
145 void calc_numbering_indents(double &,double &);
146 void chop(void);
149 void delete_characters(int,int);
151 void draw_dtext(void);
152 void draw_mtext(void);
153 void fit_dtext(void);
156 void get_characters( CStringW &,int,int)const ;
158 void insert_character(int,wchar_t, TextEditorCharAttributes const &);
159 void insert_character(wchar_t);
161 void insert_string( CStringW const &);
162 void merge( TextEditorLine *,bool);
163 void move_index(int);
165 void scale_text_height(double);
168 void set_character(int,wchar_t);
171 void set_draw_pos( AcGePoint3d const &);
172 void set_end_status(int);
174 void set_index(int);
177 void set_numbering_restart(int,bool);
178 void set_numbering_value(int,int);
179 void set_offset( AcGePoint2d const &);
182 void set_size(double);
186 void toggle_control(int,bool);
192 wchar_t auto_character(int)const ;
193 wchar_t character(int)const ;
194 wchar_t next_char(int)const ;
195 wchar_t prev_char(int)const ;
196
197protected:
198 bool is_word_stop(int,int)const ;
199 TextEditor * editor(void)const ;
200 static bool __cdecl is_justifiable_char(wchar_t);
204 virtual void post_adjust(void);
205 virtual void post_draw(void);
206 virtual void pre_adjust(void);
207 virtual void pre_draw(void);
208 virtual void render_text(wchar_t const *,int, AcGePoint3d const &, TextEditorCharAttributes const &);
211 virtual void render_text_line( TextEditorPointPair const &);
213 void calc_extents(int,int,bool, TextEditorLineExtents &);
214
215private:
216 bool breaking_field(void);
217 bool change_case(bool, TextEditorCharAttributes const &,int,int);
218 bool overflows( TextEditorLineAdjust &)const ;
219 AcGePoint3d const & char_position(int)const ;
220 double break_width(void)const ;
221 double char_extent(int)const ;
222 double leading_space(wchar_t const *,int, TextEditorCharAttributes const &,bool &)const ;
223 double numbering_size(int);
224 double numbering_size(void);
225 double stack_extent( TextEditorCharAttributes const &, TextEditorLineAdjust &);
226 double stack_trail( TextEditorCharAttributes const &)const ;
227 int convert_to_spaces( TextEditorCharAttributes const &,double,bool,bool);
228 int find_break_index( TextEditorLineTraits const *,int,int,int &)const ;
229 int sub_extent(int,int, TextEditorLineAdjust &);
230 static void __cdecl mtext_convert_func( TextEditorLine *,int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
231 static void __cdecl mtext_draw_func( TextEditorLine *,int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
232 static void __cdecl mtext_metrics_func( TextEditorLine *,int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
233 void accumulate_extent(double,wchar_t const *,int, TextEditorCharAttributes const &, TextEditorLineAdjust &);
234 void adjust_heights(double,double,double);
235 void analyze_text(int,int, TextEditorLineAnalyze &);
236 void calc_bigfont_escapes( TextEditorLineTraits *);
237 void calc_breaks( TextEditorLineTraits *);
238 void calc_dtext_metrics(void);
239 void calc_metrics(void);
240 void calc_mtext_metrics(void);
241 void calc_runs(bool);
242 void calc_traits(void);
243 void cleanup_commands(void);
244 void distribute_mtext( TextEditorLineAdjust const &);
245 void dtext_adjust(int,int, TextEditorCharAttributes const &);
246 void dtext_draw(int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
247 void dtext_metrics(int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
248 void end_metrics(int, TextEditorLineDraw &);
249 void find_tab_stop(double, TextEditorLineTabRun &)const ;
250 void finish_tabrun( TextEditorLineAdjust &);
251 void justify_mtext( TextEditorLineAdjust const &);
252 void mtext_adjust(int,int, TextEditorCharAttributes const &, TextEditorLineAdjust &);
253 void mtext_adjust(wchar_t const *,int, TextEditorCharAttributes const &, TextEditorLineAdjust &);
254 void mtext_convert(int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
255 void mtext_draw(int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
256 void mtext_draw(wchar_t const *,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
257 void mtext_extent(int,int, TextEditorCharAttributes const &, TextEditorLineAdjust &);
258 void mtext_extent(wchar_t const *,int, TextEditorCharAttributes const &, TextEditorLineAdjust &);
259 void mtext_metrics(int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
260 void numbering_adjust( TextEditorLineAdjust &);
261 void numbering_draw( TextEditorLineDraw &);
262 void numbering_extent( TextEditorLineAdjust &);
263 void numbering_metrics( TextEditorLineDraw &);
264 void run_mtext_func( TextEditorLineDraw &,void (__cdecl*)( TextEditorLine *,int,int, TextEditorCharAttributes const &, TextEditorLineDraw &));
265 void set_char_attributes_forreal( TextEditorCharAttributes const &,int,int,bool);
266 void set_char_metrics(int, AcGePoint3d const &,double);
267 void stack_adjust( TextEditorCharAttributes const &, TextEditorLineAdjust &);
268 void stack_convert( TextEditorCharAttributes const &, TextEditorLineDraw &);
269 void stack_draw( TextEditorCharAttributes const &, TextEditorLineDraw &);
270 void tab_adjust( TextEditorCharAttributes const &, TextEditorLineAdjust &);
271 void tab_convert( TextEditorCharAttributes const &, TextEditorLineDraw &);
272 void tab_draw( TextEditorCharAttributes const &, TextEditorLineDraw &);
273 void tab_extent( TextEditorCharAttributes const &, TextEditorLineAdjust &);
274 void terminate_paragraph(void);
275 void text_metrics(int,int, TextEditorCharAttributes const &, TextEditorLineDraw &);
276 wchar_t const * convert_characters(int,int, CStringW &)const ;
277 wchar_t const * convert_characters(wchar_t const *,int, CStringW &)const ;
278
279};
void set_graphics_valid(bool)
bool end_of_paragraph(void) const
AcGePoint3d cursor_position(int)
double spacing(int) const
TextEditorLine(TextEditorLine const &)
void set_prev(TextEditorLine *)
void set_traits_valid(bool)
void write_mtext(CStringW &, TextEditorOutputState &)
void insert_string(CStringW const &)
void insert_character(wchar_t)
bool traits_valid(void) const
void move_index(int)
double GetShdrawYMin(void) const
void get_commands(TextEditorCharCommandList &, int, int) const
TextEditorLineNumbering const * numbering(void) const
int para_attributes_index(void) const
void flush_char_attributes(TextEditorCharAttributes const &, int, int)
bool write_dtext(CStringA &, TextEditorOutputState &) const
virtual void pre_adjust(void)
bool adjust_valid(void) const
TextEditorCharAttributes const & char_attributes(int) const
bool write_dtext(CStringW &, int, int, TextEditorOutputState &) const
void set_start_status(int)
int numbering_value(int) const
double ascent(void) const
void append(TextEditorLine *)
int find_end_of_word(int, int)
virtual ~TextEditorLine(void)
TextEditorLine & operator=(TextEditorLine const &)
TextEditorLine * next(void) const
double container_width(void) const
virtual void render_text_highlight(TextEditorPointPair const &, TextEditorVectorPair const &, TextEditorCharAttributes const &)
virtual void post_adjust(void)
virtual void render_text_line(TextEditorPointPair const &)
TextEditorLinePick pick_char(AcGePoint3d const &, int)
wchar_t auto_character(int) const
void set_adjust_valid(bool)
virtual void post_draw(void)
void set_index(int)
void toggle_control(int, bool)
void draw_dtext(void)
void convert_white_space(int, bool, TextEditorLine *)
double spacing(double &, double &) const
void set_size(double)
AcGePoint3d cursor_position(void)
int start_status(void) const
double edge_offset(void) const
bool write_dtext(CStringA &, int, int, TextEditorOutputState &) const
void scale_text_height(double)
bool graphics_valid(void) const
wchar_t next_char(int) const
void set_numbering_restart(int, bool)
void write_unicode_text(CStringW &)
void calc_numbering_indents(double &, double &)
void calc_extents(int, int, bool, TextEditorLineExtents &)
void delete_numbering_string(void)
void insert_character(wchar_t, TextEditorCharAttributes const &)
void delete_character(int)
double GetShdrawXMin(void) const
void adjust_dtext(void)
void delete_characters(int, int)
double trail(void) const
double width_scale(void) const
void set_char_attributes(TextEditorCharAttributes const &, int, int)
AcGePoint3d const & draw_pos(void) const
void align_dtext(void)
bool find_break(int, int &)
void get_characters(CStringW &, int, int) const
virtual void set_numbering_control(TextEditorLineNumberingControl const *)
void write_mtext(CStringA &, int, int, TextEditorOutputState &)
static bool __cdecl is_justifiable_char(wchar_t)
bool is_word_stop(int, int) const
void write_mtext(CStringW &, int, int, TextEditorOutputState &)
int end_status(void) const
void set_para_attributes_index(int)
double global_flow_adjustment(TextEditorCharAttributes const &) const
TextEditorLine(TextEditor *)
double local_flow_adjustment(int, double) const
double GetShdrawYMax(void) const
int length(void) const
void adjust_mtext(void)
void set_draw_pos(AcGePoint3d const &)
void chop(void)
int find_beginning_of_word(int, int)
bool numbering_restart(int) const
bool start_of_paragraph(void) const
double height_scale(void) const
double start_indent(void) const
bool numbering_overflow(void) const
wchar_t character(int) const
virtual TextEditorLineNumberingControl const * numbering_control(void) const
void merge(TextEditorLine *, bool)
void generate_numbering_string(TextEditorParaNumbering const &)
TextEditorLineTraits const * traits(void)
virtual void render_text_highlight(TextEditorPointPair const &, TextEditorCharAttributes const &)
TextEditorCharCommand * active_command(int) const
virtual void pre_draw(void)
void set_numbering_value(int, int)
TextEditor * editor(void) const
void draw_mtext(void)
wchar_t prev_char(int) const
virtual TextEditorLineNumberingControl * numbering_control(void)
TextEditorLine * prev(void) const
int container_index(void) const
void split(TextEditorLine *)
AcGePoint2d const & extents(void) const
CStringW const & string(void) const
void set_offset(AcGePoint2d const &)
bool change_case(bool, int, int)
int move_index(int, int)
TextEditorLine * clone(int, int) const
void set_container_width(double)
bool in_bounds(TextEditorBounds const &, int, int)
void set_metrics_valid(bool)
double end_indent(void) const
int index(void) const
void set_character(int, wchar_t)
bool metrics_valid(void) const
void write_mtext(CStringA &, TextEditorOutputState &)
bool is_empty(void) const
virtual void erase(void)
TextEditorCharCommandList const & char_command_list(void) const
double baseline_adjustment(void) const
void set_next(TextEditorLine *)
void set_end_status(int)
void set_container_index(int)
double size(void) const
virtual void render_text(wchar_t const *, int, AcGePoint3d const &, TextEditorCharAttributes const &)
double align_factor(void) const
void fit_dtext(void)
bool end_of_column(void) const
void remove_character(void)
void insert_character(int, wchar_t, TextEditorCharAttributes const &)
bool start_of_column(void) const
double descent(void) const
bool write_dtext(CStringW &, TextEditorOutputState &) const
AcGePoint2d const & offset(void) const