CCLabelTTFLoader.cpp 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "editor-support/cocosbuilder/CCLabelTTFLoader.h"
  2. #include "platform/CCFileUtils.h"
  3. using namespace cocos2d;
  4. #define PROPERTY_COLOR "color"
  5. #define PROPERTY_OPACITY "opacity"
  6. #define PROPERTY_BLENDFUNC "blendFunc"
  7. #define PROPERTY_FONTNAME "fontName"
  8. #define PROPERTY_FONTSIZE "fontSize"
  9. #define PROPERTY_HORIZONTALALIGNMENT "horizontalAlignment"
  10. #define PROPERTY_VERTICALALIGNMENT "verticalAlignment"
  11. #define PROPERTY_STRING "string"
  12. #define PROPERTY_DIMENSIONS "dimensions"
  13. namespace cocosbuilder {
  14. void LabelTTFLoader::onHandlePropTypeColor3(Node * pNode, Node * pParent, const char * pPropertyName, Color3B pColor3B, CCBReader * ccbReader) {
  15. if(strcmp(pPropertyName, PROPERTY_COLOR) == 0) {
  16. ((Label *)pNode)->setColor(pColor3B);
  17. } else {
  18. NodeLoader::onHandlePropTypeColor3(pNode, pParent, pPropertyName, pColor3B, ccbReader);
  19. }
  20. }
  21. void LabelTTFLoader::onHandlePropTypeByte(Node * pNode, Node * pParent, const char * pPropertyName, unsigned char pByte, CCBReader * ccbReader) {
  22. if(strcmp(pPropertyName, PROPERTY_OPACITY) == 0) {
  23. ((Label *)pNode)->setOpacity(pByte);
  24. } else {
  25. NodeLoader::onHandlePropTypeByte(pNode, pParent, pPropertyName, pByte, ccbReader);
  26. }
  27. }
  28. void LabelTTFLoader::onHandlePropTypeBlendFunc(Node * pNode, Node * pParent, const char * pPropertyName, BlendFunc pBlendFunc, CCBReader * ccbReader) {
  29. if(strcmp(pPropertyName, PROPERTY_BLENDFUNC) == 0) {
  30. ((Label *)pNode)->setBlendFunc(pBlendFunc);
  31. } else {
  32. NodeLoader::onHandlePropTypeBlendFunc(pNode, pParent, pPropertyName, pBlendFunc, ccbReader);
  33. }
  34. }
  35. void LabelTTFLoader::onHandlePropTypeFontTTF(Node * pNode, Node * pParent, const char * pPropertyName, const char * pFontTTF, CCBReader * ccbReader) {
  36. if(strcmp(pPropertyName, PROPERTY_FONTNAME) == 0) {
  37. if (FileUtils::getInstance()->isFileExist(pFontTTF)) {
  38. auto config = ((Label *)pNode)->getTTFConfig();
  39. config.fontFilePath = pFontTTF;
  40. ((Label *)pNode)->setTTFConfig(config);
  41. } else {
  42. ((Label *)pNode)->setSystemFontName(pFontTTF);
  43. }
  44. } else {
  45. NodeLoader::onHandlePropTypeFontTTF(pNode, pParent, pPropertyName, pFontTTF, ccbReader);
  46. }
  47. }
  48. void LabelTTFLoader::onHandlePropTypeText(Node * pNode, Node * pParent, const char * pPropertyName, const char * pText, CCBReader * ccbReader) {
  49. if(strcmp(pPropertyName, PROPERTY_STRING) == 0) {
  50. ((Label *)pNode)->setString(pText);
  51. } else {
  52. NodeLoader::onHandlePropTypeText(pNode, pParent, pPropertyName, pText, ccbReader);
  53. }
  54. }
  55. void LabelTTFLoader::onHandlePropTypeFloatScale(Node * pNode, Node * pParent, const char * pPropertyName, float pFloatScale, CCBReader * ccbReader) {
  56. if(strcmp(pPropertyName, PROPERTY_FONTSIZE) == 0) {
  57. TTFConfig config = ((Label *)pNode)->getTTFConfig();
  58. if(FileUtils::getInstance()->isFileExist(config.fontFilePath))
  59. {
  60. config.fontSize = pFloatScale;
  61. ((Label *)pNode)->setTTFConfig(config);
  62. }else {
  63. ((Label *)pNode)->setSystemFontSize(pFloatScale);
  64. }
  65. } else {
  66. NodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pFloatScale, ccbReader);
  67. }
  68. }
  69. void LabelTTFLoader::onHandlePropTypeIntegerLabeled(Node * pNode, Node * pParent, const char * pPropertyName, int pIntegerLabeled, CCBReader * ccbReader) {
  70. if(strcmp(pPropertyName, PROPERTY_HORIZONTALALIGNMENT) == 0) {
  71. ((Label *)pNode)->setHorizontalAlignment(TextHAlignment(pIntegerLabeled));
  72. } else if(strcmp(pPropertyName, PROPERTY_VERTICALALIGNMENT) == 0) {
  73. ((Label *)pNode)->setVerticalAlignment(TextVAlignment(pIntegerLabeled));
  74. } else {
  75. NodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pIntegerLabeled, ccbReader);
  76. }
  77. }
  78. void LabelTTFLoader::onHandlePropTypeSize(Node * pNode, Node * pParent, const char * pPropertyName, Size size, CCBReader * ccbReader) {
  79. if(strcmp(pPropertyName, PROPERTY_DIMENSIONS) == 0) {
  80. ((Label *)pNode)->setDimensions(size.width,size.height);
  81. } else {
  82. NodeLoader::onHandlePropTypeSize(pNode, pParent, pPropertyName, size, ccbReader);
  83. }
  84. }
  85. }