350 goto err; |
357 goto err; |
351 } |
358 } |
352 FcPatternDel( FC_PATTERN_VAL(self), __stringVal ( attribute ) ); |
359 FcPatternDel( FC_PATTERN_VAL(self), __stringVal ( attribute ) ); |
353 RETURN ( self ); |
360 RETURN ( self ); |
354 err:; |
361 err:; |
|
362 #endif |
355 %}. |
363 %}. |
356 self primitiveFailed: error |
364 self primitiveFailed: error |
357 |
365 |
358 ! ! |
366 ! ! |
359 |
367 |
360 !FcPattern methodsFor:'comparing'! |
368 !FcPattern methodsFor:'comparing'! |
361 |
369 |
362 = another |
370 = another |
363 self class == another class ifFalse:[ ^ false ]. |
371 self class == another class ifFalse:[ ^ false ]. |
364 %{ /* STACK: 64000 */ |
372 %{ /* STACK: 64000 */ |
|
373 #ifdef HAVE_FONTCONFIG |
365 FcPattern* pa = FC_PATTERN_VAL(self); |
374 FcPattern* pa = FC_PATTERN_VAL(self); |
366 FcPattern* pb = FC_PATTERN_VAL(another); |
375 FcPattern* pb = FC_PATTERN_VAL(another); |
367 if (pa != NULL && pb != NULL) { |
376 if (pa != NULL && pb != NULL) { |
368 RETURN ( FcPatternEqual(pa, pb) == FcTrue ? true : false ); |
377 RETURN ( FcPatternEqual(pa, pb) == FcTrue ? true : false ); |
369 } |
378 } |
|
379 #endif |
370 %}. |
380 %}. |
371 ^ false |
381 ^ false |
372 |
382 |
373 "Created: / 17-02-2016 / 11:01:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
383 "Created: / 17-02-2016 / 11:01:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
374 ! |
384 ! |
375 |
385 |
376 hash |
386 hash |
377 |
387 |
378 %{ /* STACK: 64000 */ |
388 %{ /* STACK: 64000 */ |
|
389 #ifdef HAVE_FONTCONFIG |
379 unsigned int h = 0; |
390 unsigned int h = 0; |
380 if (__externalAddressVal(self) != NULL) { |
391 if (__externalAddressVal(self) != NULL) { |
381 h = FcPatternHash(FC_PATTERN_VAL(self)); |
392 h = FcPatternHash(FC_PATTERN_VAL(self)); |
382 h &= 0x7FFFFFFFU; |
393 h &= 0x7FFFFFFFU; |
383 } |
394 } |
384 RETURN ( __MKSMALLINT( h ) ); |
395 RETURN ( __MKSMALLINT( h ) ); |
|
396 #endif |
385 %}. |
397 %}. |
386 ^self primitiveFailed |
398 ^self primitiveFailed |
387 |
399 |
388 "Created: / 17-02-2016 / 10:59:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
400 "Created: / 17-02-2016 / 10:59:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
389 ! ! |
401 ! ! |
390 |
402 |
391 !FcPattern methodsFor:'conversion'! |
403 !FcPattern methodsFor:'conversion'! |
392 |
404 |
393 asString |
405 asString |
394 %{ /* STACK: 64000 */ |
406 %{ /* STACK: 64000 */ |
|
407 #ifdef HAVE_FONTCONFIG |
395 char *_s; |
408 char *_s; |
396 OBJ s; |
409 OBJ s; |
397 if (__externalAddressVal(self) != NULL) { |
410 if (__externalAddressVal(self) != NULL) { |
398 _s = (char*)FcNameUnparse(FC_PATTERN_VAL(self)); |
411 _s = (char*)FcNameUnparse(FC_PATTERN_VAL(self)); |
399 s = __MKSTRING(_s); |
412 s = __MKSTRING(_s); |
400 free(_s); |
413 free(_s); |
401 RETURN ( s ); |
414 RETURN ( s ); |
402 } |
415 } |
|
416 #endif |
403 %}. |
417 %}. |
404 self primitiveFailed |
418 self primitiveFailed |
405 |
419 |
406 "Created: / 17-02-2016 / 10:55:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
420 "Created: / 17-02-2016 / 10:55:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
407 ! ! |
421 ! ! |
408 |
422 |
409 !FcPattern methodsFor:'copying'! |
423 !FcPattern methodsFor:'copying'! |
410 |
424 |
411 postCopy |
425 postCopy |
412 %{ /* STACK: 64000 */ |
426 %{ /* STACK: 64000 */ |
|
427 #ifdef HAVE_FONTCONFIG |
413 __externalAddressVal(self) = (void*)FcPatternDuplicate(FC_PATTERN_VAL(self)); |
428 __externalAddressVal(self) = (void*)FcPatternDuplicate(FC_PATTERN_VAL(self)); |
|
429 #endif |
414 %}. |
430 %}. |
415 self registerForFinalization |
431 self registerForFinalization |
416 |
432 |
417 "Created: / 17-02-2016 / 10:58:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
433 "Created: / 17-02-2016 / 10:58:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
434 ! ! |
|
435 |
|
436 !FcPattern methodsFor:'error handling'! |
|
437 |
|
438 primitiveFailed |
|
439 <resource: #skipInDebuggersWalkBack> |
|
440 |
|
441 (ConfigurableFeatures hasFontConfig) ifFalse:[ |
|
442 super primitiveFailed: 'FontConfig support not compiled in. Recompile with -DHAVE_FONTCONFIG'. |
|
443 ]. |
|
444 ^ super primitiveFailed |
|
445 |
|
446 "Created: / 22-02-2016 / 08:12:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
447 ! |
|
448 |
|
449 primitiveFailed: message |
|
450 <resource: #skipInDebuggersWalkBack> |
|
451 |
|
452 (ConfigurableFeatures hasFontConfig) ifFalse:[ |
|
453 super primitiveFailed: 'FontConfig support not compiled in. Recompile with -DHAVE_FONTCONFIG'. |
|
454 ]. |
|
455 ^ super primitiveFailed: message |
|
456 |
|
457 "Created: / 22-02-2016 / 08:13:05 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
418 ! ! |
458 ! ! |
419 |
459 |
420 !FcPattern methodsFor:'finalization'! |
460 !FcPattern methodsFor:'finalization'! |
421 |
461 |
422 destroy |
462 destroy |
423 %{ /* STACK: 64000 */ |
463 %{ /* STACK: 64000 */ |
|
464 #ifdef HAVE_FONTCONFIG |
424 FcPatternDestroy((FcPattern*)__externalAddressVal(self)); |
465 FcPatternDestroy((FcPattern*)__externalAddressVal(self)); |
425 __externalAddressVal(self) = NULL; |
466 __externalAddressVal(self) = NULL; |
426 RETURN ( self ); |
467 RETURN ( self ); |
427 %}. |
468 #endif |
|
469 %}. |
428 self primitiveFailed. |
470 self primitiveFailed. |
429 ! |
471 ! |
430 |
472 |
431 finalize |
473 finalize |
432 self destroy |
474 self destroy |
436 |
478 |
437 !FcPattern methodsFor:'initialization & release'! |
479 !FcPattern methodsFor:'initialization & release'! |
438 |
480 |
439 initialize |
481 initialize |
440 %{ /* STACK: 64000 */ |
482 %{ /* STACK: 64000 */ |
|
483 #ifdef HAVE_FONTCONFIG |
441 __externalAddressVal(self) = (void*)FcPatternCreate(); |
484 __externalAddressVal(self) = (void*)FcPatternCreate(); |
442 __SSEND0(self, @symbol(registerForFinalization), 4); |
485 __SSEND0(self, @symbol(registerForFinalization), 4); |
443 RETURN ( self ); |
486 RETURN ( self ); |
444 err:; |
487 err:; |
445 |
488 |
|
489 #endif |
446 %}. |
490 %}. |
447 self primitiveFailed. |
491 self primitiveFailed. |
448 |
492 |
449 "Created: / 16-02-2016 / 19:04:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
493 "Created: / 16-02-2016 / 19:04:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
450 |
494 |
451 ! |
495 ! |
452 |
496 |
453 initializeFromString: aString |
497 initializeFromString: aString |
454 | error | |
498 | error | |
455 %{ /* STACK: 64000 */ |
499 %{ /* STACK: 64000 */ |
|
500 #ifdef HAVE_FONTCONFIG |
456 if ( ! __isStringLike ( aString ) ) { |
501 if ( ! __isStringLike ( aString ) ) { |
457 error = @symbol(BadArg1); |
502 error = @symbol(BadArg1); |
458 goto err; |
503 goto err; |
459 } |
504 } |
460 __externalAddressVal(self) = (void*)FcNameParse(__stringVal(aString)); |
505 __externalAddressVal(self) = (void*)FcNameParse(__stringVal(aString)); |
461 __SSEND0(self, @symbol(registerForFinalization), 4); |
506 __SSEND0(self, @symbol(registerForFinalization), 4); |
462 RETURN ( self ); |
507 RETURN ( self ); |
463 err:; |
508 err:; |
|
509 #endif |
464 %}. |
510 %}. |
465 self primitiveFailed. |
511 self primitiveFailed. |
466 |
512 |
467 ! |
513 ! |
468 |
514 |