Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
StandardStyledTextImager.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
5namespace Stroika::Frameworks::Led {
6
7 /*
8 ********************************************************************************
9 *************************** StyledInfoSummaryRecord ****************************
10 ********************************************************************************
11 */
12 inline StyledInfoSummaryRecord::StyledInfoSummaryRecord (const FontSpecification& fontSpec, size_t length)
13 : FontSpecification{fontSpec}
14 , fLength{length}
15 {
16 }
17
18 /*
19 ********************************************************************************
20 **************************** StyledInfoSummaryRecord ***************************
21 ********************************************************************************
22 */
23 inline void AbstractStyleDatabaseRep::SetStyleInfo (size_t charAfterPos, size_t nTCharsFollowing, const vector<StyledInfoSummaryRecord>& styleInfos)
24 {
25 SetStyleInfo (charAfterPos, nTCharsFollowing, styleInfos.size (), &styleInfos.front ());
26 }
27 inline void AbstractStyleDatabaseRep::Invariant () const
28 {
29#if qStroika_Foundation_Debug_AssertionsChecked
30 Invariant_ ();
31#endif
32 }
33
34 /*
35 ********************************************************************************
36 ****************************** StandardStyleMarker *****************************
37 ********************************************************************************
38 */
39 inline StandardStyleMarker::StandardStyleMarker (const FontSpecification& styleInfo)
40 : fFontSpecification{styleInfo}
41 {
42 }
43 inline FontSpecification StandardStyleMarker::GetInfo () const
44 {
45 return fFontSpecification;
46 }
47 inline void StandardStyleMarker::SetInfo (const FontSpecification& fsp)
48 {
49 fFontSpecification = fsp;
50 }
51
52 /*
53 ********************************************************************************
54 ** SimpleStyleMarkerByIncrementalFontSpecStandardStyleMarkerHelper<BASECLASS> **
55 ********************************************************************************
56 */
57 template <class BASECLASS>
58 StyleRunElement SimpleStyleMarkerByIncrementalFontSpecStandardStyleMarkerHelper<BASECLASS>::MungeRunElement (const StyleRunElement& inRunElt) const
59 {
60 using SSM = StandardStyleMarker;
61
62 fFSP = FontSpecification{};
63 StyleRunElement result = inherited::MungeRunElement (inRunElt);
64 for (auto i = result.fSupercededMarkers.begin (); i != result.fSupercededMarkers.end (); ++i) {
65 if (SSM* ssm = dynamic_cast<SSM*> (*i)) {
66 fFSP = ssm->fFontSpecification;
67 }
68 }
69 if (SSM* ssm = dynamic_cast<SSM*> (result.fMarker)) {
70 fFSP = ssm->fFontSpecification;
71 result.fMarker = nullptr;
72 }
73 return result;
74 }
75#if qStroika_Frameworks_Led_SupportGDI
76 template <class BASECLASS>
77 FontSpecification SimpleStyleMarkerByIncrementalFontSpecStandardStyleMarkerHelper<BASECLASS>::MakeFontSpec (const StyledTextImager* /*imager*/,
78 const StyleRunElement& /*runElement*/) const
79 {
80 return fFSP;
81 }
82#endif
83
84#if qStroika_Frameworks_Led_SupportGDI
85 /*
86 ********************************************************************************
87 *************************** StandardStyledTextImager ***************************
88 ********************************************************************************
89 */
90 inline shared_ptr<AbstractStyleDatabaseRep> StandardStyledTextImager::GetStyleDatabase () const
91 {
92 return fStyleDatabase;
93 }
94 inline FontSpecification StandardStyledTextImager::GetStyleInfo (size_t charAfterPos) const
95 {
96 vector<StyledInfoSummaryRecord> result = fStyleDatabase->GetStyleInfo (charAfterPos, 1);
97 Assert (result.size () == 1);
98 return result[0];
99 }
100 inline vector<StyledInfoSummaryRecord> StandardStyledTextImager::GetStyleInfo (size_t charAfterPos, size_t nTCharsFollowing) const
101 {
102 return (fStyleDatabase->GetStyleInfo (charAfterPos, nTCharsFollowing));
103 }
104 inline void StandardStyledTextImager::SetStyleInfo (size_t charAfterPos, size_t nTCharsFollowing, const IncrementalFontSpecification& styleInfo)
105 {
106 fStyleDatabase->SetStyleInfo (charAfterPos, nTCharsFollowing, styleInfo);
107 }
108 inline void StandardStyledTextImager::SetStyleInfo (size_t charAfterPos, size_t nTCharsFollowing, const vector<StyledInfoSummaryRecord>& styleInfos)
109 {
110 fStyleDatabase->SetStyleInfo (charAfterPos, nTCharsFollowing, styleInfos);
111 }
112 inline void StandardStyledTextImager::SetStyleInfo (size_t charAfterPos, size_t nTCharsFollowing, size_t nStyleInfos,
113 const StyledInfoSummaryRecord* styleInfos)
114 {
115 fStyleDatabase->SetStyleInfo (charAfterPos, nTCharsFollowing, nStyleInfos, styleInfos);
116 }
117#endif
118
119}