@@ -17,7 +17,7 @@ public class GraphicHelper
1717
1818 private static Regex mediansPattern1 = new Regex ( @"(.*),""medians"":\[\[\[.*\]\]\](.*)" ) ;
1919
20- private StringBuilder builder = new StringBuilder ( ) ;
20+ internal StringBuilder Builder = new StringBuilder ( ) ;
2121 private List < char > preparedTxt = new List < char > ( ) ;
2222
2323 private static ( float , float ) GetBoundingBoxOffset ( GraphicInfo info )
@@ -119,34 +119,34 @@ public GraphicHelper(string dataPath)
119119
120120 public void Reset ( )
121121 {
122- builder . Clear ( ) ;
122+ Builder . Clear ( ) ;
123123 preparedTxt . Clear ( ) ;
124- builder . Append ( prev_template ) ;
124+ Builder . Append ( prev_template ) ;
125125 }
126126
127127 public void DefParent ( string alias , string parent , TextProperty prop )
128128 {
129- builder . Append ( $ "def text { alias } {{") ;
130- builder . Append ( $ "content=\" \" ") ;
131- builder . Append ( $ "anchorX=.5 ") ;
132- builder . Append ( $ "anchorY=.5 ") ;
133- builder . Append ( $ "fontSize=10% ") ;
134- if ( ! string . IsNullOrEmpty ( parent ) ) builder . Append ( $ "parent=\" { parent } \" ") ;
129+ Builder . Append ( $ "def text { alias } {{") ;
130+ Builder . Append ( $ "content=\" \" ") ;
131+ Builder . Append ( $ "anchorX=.5 ") ;
132+ Builder . Append ( $ "anchorY=.5 ") ;
133+ Builder . Append ( $ "fontSize=10% ") ;
134+ if ( ! string . IsNullOrEmpty ( parent ) ) Builder . Append ( $ "parent=\" { parent } \" ") ;
135135 if ( prop != null )
136136 {
137- if ( prop . x != null ) builder . Append ( $ ",x={ prop . x } %") ;
138- if ( prop . y != null ) builder . Append ( $ ",y={ prop . y } %") ;
139- if ( prop . rotateX != null ) builder . Append ( $ ",rotateX={ prop . rotateX } ") ;
140- if ( prop . rotateY != null ) builder . Append ( $ ",rotateY={ prop . rotateY } ") ;
141- if ( prop . rotateZ != null ) builder . Append ( $ ",rotateZ={ prop . rotateZ } ") ;
142- if ( prop . scale != null ) builder . Append ( $ ",scale={ prop . scale } ") ;
143- if ( prop . zIndex != null ) builder . Append ( $ ",zIndex={ prop . zIndex } ") ;
144- if ( prop . duration != null ) builder . Append ( $ ",duration={ prop . duration } s") ;
145- if ( prop . alpha != null ) builder . Append ( $ ",alpha={ prop . alpha } ") ;
146- if ( prop . anchorX != null ) builder . Append ( $ ",anchorX={ prop . anchorX } ") ;
147- if ( prop . anchorY != null ) builder . Append ( $ ",anchorY={ prop . anchorY } ") ;
137+ if ( prop . x != null ) Builder . Append ( $ ",x={ prop . x } %") ;
138+ if ( prop . y != null ) Builder . Append ( $ ",y={ prop . y } %") ;
139+ if ( prop . rotateX != null ) Builder . Append ( $ ",rotateX={ prop . rotateX } ") ;
140+ if ( prop . rotateY != null ) Builder . Append ( $ ",rotateY={ prop . rotateY } ") ;
141+ if ( prop . rotateZ != null ) Builder . Append ( $ ",rotateZ={ prop . rotateZ } ") ;
142+ if ( prop . scale != null ) Builder . Append ( $ ",scale={ prop . scale } ") ;
143+ if ( prop . zIndex != null ) Builder . Append ( $ ",zIndex={ prop . zIndex } ") ;
144+ if ( prop . duration != null ) Builder . Append ( $ ",duration={ prop . duration } s") ;
145+ if ( prop . alpha != null ) Builder . Append ( $ ",alpha={ prop . alpha } ") ;
146+ if ( prop . anchorX != null ) Builder . Append ( $ ",anchorX={ prop . anchorX } ") ;
147+ if ( prop . anchorY != null ) Builder . Append ( $ ",anchorY={ prop . anchorY } ") ;
148148
149- builder . Append ( "}\n " ) ;
149+ Builder . Append ( "}\n " ) ;
150150 }
151151 }
152152
@@ -170,7 +170,7 @@ public void AddText(string txt, string alias, string parent, TextProperty prop,
170170 chIndex = preparedTxt . Count ;
171171 preparedTxt . Add ( ch ) ;
172172 for ( int partIndex = 0 ; partIndex < chGraphic . Strokes . Count ; partIndex ++ )
173- builder . Append ( $ "let p{ chIndex } _{ partIndex } =pb{{d=\" { chGraphic . Strokes [ partIndex ] } \" ,alpha=0}}\n ") ;
173+ Builder . Append ( $ "let p{ chIndex } _{ partIndex } =pb{{d=\" { chGraphic . Strokes [ partIndex ] } \" ,alpha=0}}\n ") ;
174174 //TODO:对应每一个笔画计算中点,使其支持XY轴旋转。
175175 }
176176 else
@@ -186,39 +186,39 @@ public void AddText(string txt, string alias, string parent, TextProperty prop,
186186 var containerName = $ "{ alias } _{ chSeq } _t{ partIndex } ";
187187 var subContainerName = $ "{ alias } _{ chSeq } _b{ partIndex } ";
188188
189- builder . Append ( $ "let { strokeName } =p{ chIndex } _{ partIndex } {{parent=\" { subContainerName } \" alpha=1") ;
189+ Builder . Append ( $ "let { strokeName } =p{ chIndex } _{ partIndex } {{parent=\" { subContainerName } \" alpha=1") ;
190190 //builder.Append($"viewBox=\"{-chGraphic.Width / 2:F1} {-chGraphic.Height / 2:F1} {chGraphic.Width:F0} {chGraphic.Height:F0}\"");
191- if ( prop . borderAlpha != null ) builder . Append ( $ " borderAlpha={ prop . borderAlpha } ") ;
192- if ( prop . borderWidth != null ) builder . Append ( $ " borderWidth={ prop . borderWidth } ") ;
193- if ( ! string . IsNullOrEmpty ( prop . borderColor ) ) builder . Append ( $ " borderColor={ prop . borderColor } ") ;
194- if ( ! string . IsNullOrEmpty ( prop . fillColor ) ) builder . Append ( $ " fillColor={ prop . fillColor } ") ;
195- if ( prop . fillAlpha != null ) builder . Append ( $ " borderWidth={ prop . fillAlpha } ") ;
191+ if ( prop . borderAlpha != null ) Builder . Append ( $ " borderAlpha={ prop . borderAlpha } ") ;
192+ if ( prop . borderWidth != null ) Builder . Append ( $ " borderWidth={ prop . borderWidth } ") ;
193+ if ( ! string . IsNullOrEmpty ( prop . borderColor ) ) Builder . Append ( $ " borderColor={ prop . borderColor } ") ;
194+ if ( ! string . IsNullOrEmpty ( prop . fillColor ) ) Builder . Append ( $ " fillColor={ prop . fillColor } ") ;
195+ if ( prop . fillAlpha != null ) Builder . Append ( $ " borderWidth={ prop . fillAlpha } ") ;
196196 //if (prop.width != null) builder.Append($" width={prop.width}%");
197197 //if (prop.height != null) builder.Append($" height={prop.height}%");
198- builder . Append ( "}" ) ;
199- builder . Append ( $ "let { subContainerName } = cb{{parent=\" { containerName } \" ") ;
198+ Builder . Append ( "}" ) ;
199+ Builder . Append ( $ "let { subContainerName } = cb{{parent=\" { containerName } \" ") ;
200200 //这里的原因是因为scale属性一般是放在第二层,用于缩放本身的内容。如果anchor属性放在第一层可能无法取得预期的效果?
201201 //感觉大概率会导致单个笔画的位置出错,先试试吧
202- if ( prop . anchorX != null ) builder . Append ( $ ",anchorX={ prop . anchorX } ") ;
203- if ( prop . anchorY != null ) builder . Append ( $ ",anchorY={ prop . anchorY } ") ;
204- builder . Append ( $ "}}") ;
205- builder . Append ( $ "let { containerName } = cb{{parent=\" { parent } \" ") ;
202+ if ( prop . anchorX != null ) Builder . Append ( $ ",anchorX={ prop . anchorX } ") ;
203+ if ( prop . anchorY != null ) Builder . Append ( $ ",anchorY={ prop . anchorY } ") ;
204+ Builder . Append ( $ "}}") ;
205+ Builder . Append ( $ "let { containerName } = cb{{parent=\" { parent } \" ") ;
206206
207207 //实际上因为anchor 移动的是文字,定位点依然在右上角,所以这里手动加上50%
208- if ( prop . x != null ) builder . Append ( $ ",x={ prop . x + 50 } %") ;
209- if ( prop . y != null ) builder . Append ( $ ",y={ prop . y + 50 } %") ;
210- if ( prop . rotateX != null ) builder . Append ( $ ",rotateX={ prop . rotateX } ") ;
211- if ( prop . rotateY != null ) builder . Append ( $ ",rotateY={ prop . rotateY } ") ;
212- if ( prop . rotateZ != null ) builder . Append ( $ ",rotateZ={ prop . rotateZ } ") ;
213- if ( prop . scale != null ) builder . Append ( $ ",scale={ prop . scale } ") ;
214- if ( prop . zIndex != null ) builder . Append ( $ ",zIndex={ prop . zIndex } ") ;
215- if ( prop . duration != null ) builder . Append ( $ ",duration={ prop . duration } s") ;
216- if ( prop . alpha != null ) builder . Append ( $ ",alpha={ prop . alpha } ") ;
208+ if ( prop . x != null ) Builder . Append ( $ ",x={ prop . x + 50 } %") ;
209+ if ( prop . y != null ) Builder . Append ( $ ",y={ prop . y + 50 } %") ;
210+ if ( prop . rotateX != null ) Builder . Append ( $ ",rotateX={ prop . rotateX } ") ;
211+ if ( prop . rotateY != null ) Builder . Append ( $ ",rotateY={ prop . rotateY } ") ;
212+ if ( prop . rotateZ != null ) Builder . Append ( $ ",rotateZ={ prop . rotateZ } ") ;
213+ if ( prop . scale != null ) Builder . Append ( $ ",scale={ prop . scale } ") ;
214+ if ( prop . zIndex != null ) Builder . Append ( $ ",zIndex={ prop . zIndex } ") ;
215+ if ( prop . duration != null ) Builder . Append ( $ ",duration={ prop . duration } s") ;
216+ if ( prop . alpha != null ) Builder . Append ( $ ",alpha={ prop . alpha } ") ;
217217
218- builder . Append ( "}\n " ) ;
218+ Builder . Append ( "}\n " ) ;
219219 if ( onProcessMotion != null )
220220 {
221- var motion = new MotionHelper ( builder , containerName , subContainerName , strokeName ) ;
221+ var motion = new MotionHelper ( Builder , containerName , subContainerName , strokeName ) ;
222222 onProcessMotion ( motion , prop , chSeq , partIndex ) ;
223223 motion . ProcessBackupLayer ( ) ;
224224 }
@@ -231,9 +231,16 @@ public void AddText(string txt, string alias, string parent, TextProperty prop,
231231 }
232232 }
233233
234+ public void DefMotion ( string dst , Action < MotionHelper > onProcessMotion )
235+ {
236+ var motion = new MotionHelper ( Builder , dst , null , null ) ;
237+ onProcessMotion ? . Invoke ( motion ) ;
238+ motion . ProcessBackupLayer ( ) ;
239+ }
240+
234241 public string GetResult ( )
235242 {
236- return builder . ToString ( ) ;
243+ return Builder . ToString ( ) ;
237244 }
238245 }
239246}
0 commit comments