28
28
* POSSIBILITY OF SUCH DAMAGE.
29
29
*/
30
30
31
-
32
31
#include <errno.h>
33
32
#include <stdio.h>
34
33
#include <stdlib.h>
35
34
#include <string.h>
36
35
#include <LCUI_Build.h>
37
36
#include <LCUI/LCUI.h>
38
37
#include <LCUI/thread.h>
38
+ #include <LCUI/gui/widget.h>
39
+ #include <LCUI/gui/widget/textview.h>
39
40
#include <LCUI/gui/css_library.h>
40
41
#include <LCUI/gui/css_parser.h>
41
42
#include <LCUI/font.h>
42
43
43
- #define SPLIT_NUMBER 1
44
- #define SPLIT_COLOR (1<< 1)
45
- #define SPLIT_STYLE (1<< 2)
44
+ #define SPLIT_NUMBER 1
45
+ #define SPLIT_COLOR (1 << 1)
46
+ #define SPLIT_STYLE (1 << 2)
46
47
47
- #define LEN (A ) sizeof( A ) / sizeof( *A )
48
+ #define LEN (A ) sizeof(A ) / sizeof(*A )
48
49
49
50
static struct CSSParserModule {
50
51
int count ;
51
- DictType dicttype ; /**< 解析器表的字典类型数据 */
52
- Dict * parsers ; /**< 解析器表,以名称进行索引 */
52
+ DictType dicttype ; /**< 解析器表的字典类型数据 */
53
+ Dict * parsers ; /**< 解析器表,以名称进行索引 */
53
54
} self ;
54
55
55
- static int SplitValues (const char * str , LCUI_Style slist ,
56
- int max_len , int mode )
56
+ static int SplitValues (const char * str , LCUI_Style slist , int max_len , int mode )
57
57
{
58
58
char * * values ;
59
59
const char * p ;
60
60
int val , vi = 0 , vj = 0 , n_quotes = 0 ;
61
61
62
- values = (char * * )calloc (max_len , sizeof (char * ));
63
- values [0 ] = (char * )malloc (sizeof (char ) * 64 );
62
+ values = (char * * )calloc (max_len , sizeof (char * ));
63
+ values [0 ] = (char * )malloc (sizeof (char ) * 64 );
64
64
for (p = str ; * p ; ++ p ) {
65
65
if (* p == '(' ) {
66
66
n_quotes += 1 ;
@@ -81,7 +81,7 @@ static int SplitValues(const char *str, LCUI_Style slist,
81
81
if (vi >= max_len ) {
82
82
goto clean ;
83
83
}
84
- values [vi ] = (char * )malloc (sizeof (char ) * 64 );
84
+ values [vi ] = (char * )malloc (sizeof (char ) * 64 );
85
85
}
86
86
}
87
87
values [vi ][vj ] = 0 ;
@@ -195,8 +195,7 @@ static int OnParseImage(LCUI_CSSParserStyleContext ctx, const char *str)
195
195
return -1 ;
196
196
}
197
197
198
- static int OnParseStyleOption (LCUI_CSSParserStyleContext ctx ,
199
- const char * str )
198
+ static int OnParseStyleOption (LCUI_CSSParserStyleContext ctx , const char * str )
200
199
{
201
200
LCUI_Style s = & ctx -> sheet -> sheet [ctx -> parser -> key ];
202
201
int v = LCUI_GetStyleValue (str );
@@ -209,11 +208,10 @@ static int OnParseStyleOption(LCUI_CSSParserStyleContext ctx,
209
208
return 0 ;
210
209
}
211
210
212
- static int OnParseBorder (LCUI_CSSParserStyleContext ctx ,
213
- const char * str )
211
+ static int OnParseBorder (LCUI_CSSParserStyleContext ctx , const char * str )
214
212
{
215
213
LCUI_StyleSheet ss = ctx -> sheet ;
216
- LCUI_StyleRec slist [3 ] = { { 0 }, { 0 }, { 0 } };
214
+ LCUI_StyleRec slist [3 ] = { 0 };
217
215
int i , mode = SPLIT_COLOR | SPLIT_NUMBER | SPLIT_STYLE ;
218
216
if (SplitValues (str , slist , 3 , mode ) < 1 ) {
219
217
return -1 ;
@@ -242,14 +240,14 @@ static int OnParseBorder(LCUI_CSSParserStyleContext ctx,
242
240
ss -> sheet [key_border_bottom_style ] = slist [i ];
243
241
ss -> sheet [key_border_left_style ] = slist [i ];
244
242
break ;
245
- default : return -1 ;
243
+ default :
244
+ return -1 ;
246
245
}
247
246
}
248
247
return 0 ;
249
248
}
250
249
251
- static int OnParseBorderRadius (LCUI_CSSParserStyleContext ctx ,
252
- const char * str )
250
+ static int OnParseBorderRadius (LCUI_CSSParserStyleContext ctx , const char * str )
253
251
{
254
252
LCUI_StyleRec s ;
255
253
LCUI_StyleSheet ss = ctx -> sheet ;
@@ -263,11 +261,10 @@ static int OnParseBorderRadius(LCUI_CSSParserStyleContext ctx,
263
261
return 0 ;
264
262
}
265
263
266
- static int OnParseBorderLeft (LCUI_CSSParserStyleContext ctx ,
267
- const char * str )
264
+ static int OnParseBorderLeft (LCUI_CSSParserStyleContext ctx , const char * str )
268
265
{
269
- LCUI_StyleRec slist [3 ];
270
266
LCUI_StyleSheet ss = ctx -> sheet ;
267
+ LCUI_StyleRec slist [3 ] = { 0 };
271
268
int i , mode = SPLIT_COLOR | SPLIT_NUMBER | SPLIT_STYLE ;
272
269
if (SplitValues (str , slist , 3 , mode ) < 1 ) {
273
270
return -1 ;
@@ -284,17 +281,17 @@ static int OnParseBorderLeft(LCUI_CSSParserStyleContext ctx,
284
281
case LCUI_STYPE_style :
285
282
ss -> sheet [key_border_left_style ] = slist [i ];
286
283
break ;
287
- default : return -1 ;
284
+ default :
285
+ return -1 ;
288
286
}
289
287
}
290
288
return 0 ;
291
289
}
292
290
293
- static int OnParseBorderTop (LCUI_CSSParserStyleContext ctx ,
294
- const char * str )
291
+ static int OnParseBorderTop (LCUI_CSSParserStyleContext ctx , const char * str )
295
292
{
296
- LCUI_StyleRec slist [3 ];
297
293
LCUI_StyleSheet ss = ctx -> sheet ;
294
+ LCUI_StyleRec slist [3 ] = { 0 };
298
295
int i , mode = SPLIT_COLOR | SPLIT_NUMBER | SPLIT_STYLE ;
299
296
if (SplitValues (str , slist , 3 , mode ) < 1 ) {
300
297
return -1 ;
@@ -311,17 +308,17 @@ static int OnParseBorderTop(LCUI_CSSParserStyleContext ctx,
311
308
case LCUI_STYPE_style :
312
309
ss -> sheet [key_border_top_style ] = slist [i ];
313
310
break ;
314
- default : return -1 ;
311
+ default :
312
+ return -1 ;
315
313
}
316
314
}
317
315
return 0 ;
318
316
}
319
317
320
- static int OnParseBorderRight (LCUI_CSSParserStyleContext ctx ,
321
- const char * str )
318
+ static int OnParseBorderRight (LCUI_CSSParserStyleContext ctx , const char * str )
322
319
{
323
- LCUI_StyleRec slist [3 ];
324
320
LCUI_StyleSheet ss = ctx -> sheet ;
321
+ LCUI_StyleRec slist [3 ] = { 0 };
325
322
int i , mode = SPLIT_COLOR | SPLIT_NUMBER | SPLIT_STYLE ;
326
323
if (SplitValues (str , slist , 3 , mode ) < 1 ) {
327
324
return -1 ;
@@ -338,17 +335,17 @@ static int OnParseBorderRight(LCUI_CSSParserStyleContext ctx,
338
335
case LCUI_STYPE_style :
339
336
ss -> sheet [key_border_right_style ] = slist [i ];
340
337
break ;
341
- default : return -1 ;
338
+ default :
339
+ return -1 ;
342
340
}
343
341
}
344
342
return 0 ;
345
343
}
346
344
347
- static int OnParseBorderBottom (LCUI_CSSParserStyleContext ctx ,
348
- const char * str )
345
+ static int OnParseBorderBottom (LCUI_CSSParserStyleContext ctx , const char * str )
349
346
{
350
- LCUI_StyleRec slist [3 ];
351
347
LCUI_StyleSheet ss = ctx -> sheet ;
348
+ LCUI_StyleRec slist [3 ] = { 0 };
352
349
int i , mode = SPLIT_COLOR | SPLIT_NUMBER | SPLIT_STYLE ;
353
350
if (SplitValues (str , slist , 3 , mode ) < 1 ) {
354
351
return -1 ;
@@ -365,7 +362,8 @@ static int OnParseBorderBottom(LCUI_CSSParserStyleContext ctx,
365
362
case LCUI_STYPE_style :
366
363
ss -> sheet [key_border_bottom_style ] = slist [i ];
367
364
break ;
368
- default : return -1 ;
365
+ default :
366
+ return -1 ;
369
367
}
370
368
}
371
369
return 0 ;
@@ -418,7 +416,7 @@ static int OnParseBorderStyle(LCUI_CSSParserStyleContext ctx, const char *str)
418
416
419
417
static int OnParsePadding (LCUI_CSSParserStyleContext ctx , const char * str )
420
418
{
421
- LCUI_StyleRec s [4 ];
419
+ LCUI_StyleRec s [4 ] = { 0 } ;
422
420
LCUI_StyleSheet ss = ctx -> sheet ;
423
421
switch (SplitValues (str , s , 4 , SPLIT_NUMBER )) {
424
422
case 1 :
@@ -444,14 +442,15 @@ static int OnParsePadding(LCUI_CSSParserStyleContext ctx, const char *str)
444
442
ss -> sheet [key_padding_right ] = s [1 ];
445
443
ss -> sheet [key_padding_bottom ] = s [2 ];
446
444
ss -> sheet [key_padding_left ] = s [3 ];
447
- default : break ;
445
+ default :
446
+ break ;
448
447
}
449
448
return 0 ;
450
449
}
451
450
452
451
static int OnParseMargin (LCUI_CSSParserStyleContext ctx , const char * str )
453
452
{
454
- LCUI_StyleRec s [4 ];
453
+ LCUI_StyleRec s [4 ] = { 0 } ;
455
454
LCUI_StyleSheet ss = ctx -> sheet ;
456
455
switch (SplitValues (str , s , 4 , SPLIT_NUMBER )) {
457
456
case 1 :
@@ -477,14 +476,15 @@ static int OnParseMargin(LCUI_CSSParserStyleContext ctx, const char *str)
477
476
ss -> sheet [key_margin_right ] = s [1 ];
478
477
ss -> sheet [key_margin_bottom ] = s [2 ];
479
478
ss -> sheet [key_margin_left ] = s [3 ];
480
- default : break ;
479
+ default :
480
+ break ;
481
481
}
482
482
return 0 ;
483
483
}
484
484
485
485
static int OnParseBoxShadow (LCUI_CSSParserStyleContext ctx , const char * str )
486
486
{
487
- LCUI_StyleRec s [5 ];
487
+ LCUI_StyleRec s [5 ] = { 0 } ;
488
488
LCUI_StyleSheet ss = ctx -> sheet ;
489
489
if (strcasecmp (str , "none" ) == 0 ) {
490
490
SetStyle (ss , key_box_shadow_x , 0 , none );
@@ -508,7 +508,8 @@ static int OnParseBoxShadow(LCUI_CSSParserStyleContext ctx, const char *str)
508
508
ss -> sheet [key_box_shadow_blur ] = s [2 ];
509
509
ss -> sheet [key_box_shadow_color ] = s [3 ];
510
510
break ;
511
- default : return -1 ;
511
+ default :
512
+ return -1 ;
512
513
}
513
514
return 0 ;
514
515
}
@@ -518,9 +519,10 @@ static int OnParseBackground(LCUI_CSSParserStyleContext ctx, const char *str)
518
519
return 0 ;
519
520
}
520
521
521
- static int OnParseBackgroundPosition (LCUI_CSSParserStyleContext ctx , const char * str )
522
+ static int OnParseBackgroundPosition (LCUI_CSSParserStyleContext ctx ,
523
+ const char * str )
522
524
{
523
- LCUI_StyleRec slist [2 ];
525
+ LCUI_StyleRec slist [2 ] = { 0 } ;
524
526
int ret = OnParseStyleOption (ctx , str );
525
527
if (ret == 0 ) {
526
528
return 0 ;
@@ -533,9 +535,10 @@ static int OnParseBackgroundPosition(LCUI_CSSParserStyleContext ctx, const char
533
535
return -2 ;
534
536
}
535
537
536
- static int OnParseBackgroundSize (LCUI_CSSParserStyleContext ctx , const char * str )
538
+ static int OnParseBackgroundSize (LCUI_CSSParserStyleContext ctx ,
539
+ const char * str )
537
540
{
538
- LCUI_StyleRec slist [2 ];
541
+ LCUI_StyleRec slist [2 ] = { 0 } ;
539
542
int ret = OnParseStyleOption (ctx , str );
540
543
if (ret == 0 ) {
541
544
SetStyle (ctx -> sheet , key_background_size_width , 0 , 0 );
@@ -552,7 +555,8 @@ static int OnParseBackgroundSize(LCUI_CSSParserStyleContext ctx, const char *str
552
555
return 0 ;
553
556
}
554
557
555
- static int OnParseBackgroundRepeat (LCUI_CSSParserStyleContext ctx , const char * str )
558
+ static int OnParseBackgroundRepeat (LCUI_CSSParserStyleContext ctx ,
559
+ const char * str )
556
560
{
557
561
return 0 ;
558
562
}
@@ -645,8 +649,12 @@ static int CSSParser_ParseComment(LCUI_CSSParserContext ctx)
645
649
int CSSParser_BeginParseComment (LCUI_CSSParserContext ctx )
646
650
{
647
651
switch (* (ctx -> cur + 1 )) {
648
- case '/' : ctx -> comment .is_line_comment = TRUE; break ;
649
- case '*' : ctx -> comment .is_line_comment = FALSE; break ;
652
+ case '/' :
653
+ ctx -> comment .is_line_comment = TRUE;
654
+ break ;
655
+ case '*' :
656
+ ctx -> comment .is_line_comment = FALSE;
657
+ break ;
650
658
default :
651
659
CSSParser_GetChar (ctx );
652
660
return -1 ;
@@ -694,8 +702,7 @@ static int CSSParser_ParseSelector(LCUI_CSSParserContext ctx)
694
702
return 0 ;
695
703
}
696
704
697
- static int CSSParser_SetRuleParser (LCUI_CSSParserContext ctx ,
698
- const char * name )
705
+ static int CSSParser_SetRuleParser (LCUI_CSSParserContext ctx , const char * name )
699
706
{
700
707
LCUI_CSSRule rule ;
701
708
LCUI_CSSRuleParser parser ;
@@ -754,8 +761,8 @@ static int CSSParser_ParseStyleName(LCUI_CSSParserContext ctx)
754
761
ctx -> target = CSS_TARGET_VALUE ;
755
762
CSSParser_EndBuffer (ctx );
756
763
CSSParser_SetStyleParser (ctx , ctx -> buffer );
757
- DEBUG_MSG ("select style: %s, parser: %p\n" ,
758
- ctx -> buffer , ctx -> style_parser );
764
+ DEBUG_MSG ("select style: %s, parser: %p\n" , ctx -> buffer ,
765
+ ctx -> style_parser );
759
766
break ;
760
767
case '}' :
761
768
ctx -> target = CSS_TARGET_NONE ;
@@ -833,6 +840,7 @@ void CSSParser_EndParseRuleData(LCUI_CSSParserContext ctx)
833
840
static void LoadFontFile (void * arg1 , void * arg2 )
834
841
{
835
842
LCUIFont_LoadFile (arg1 );
843
+ LCUIWidget_RefreshTextView ();
836
844
}
837
845
838
846
static void OnParsedFontFace (LCUI_CSSFontFace face )
0 commit comments