WWPalette.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*****************************************************************************/
  2. /* ここから */
  3. /*****************************************************************************/
  4. #include "WWPaletteP.h"
  5. #include "etc.h"
  6. /*****************************************************************************/
  7. /* メンバ関数の定義 */
  8. /*****************************************************************************/
  9. int WWPalette_GetNumber(WWPalette p) { return (p->number); }
  10. int WWPalette_SetNumber(WWPalette p, int n) { return (p->number = n); }
  11. int WWPalette_GetTransparent(WWPalette p) { return (p->transparent); }
  12. int WWPalette_SetTransparent(WWPalette p, int f)
  13. { return (p->transparent = f); }
  14. WWPalette WWPalette_Create(int number, int * mapped_colors, int transparent)
  15. {
  16. WWPalette palette;
  17. palette = (WWPalette)malloc(sizeof(_WWPalette));
  18. if (palette == NULL)
  19. Wonx_Error("WWPalette_Create", "Cannot allocate memory");
  20. WWPalette_SetNumber(palette, number);
  21. WWPalette_SetTransparent(palette, transparent);
  22. WWPalette_SetMappedColors(palette, mapped_colors);
  23. return (palette);
  24. }
  25. WWPalette WWPalette_Destroy(WWPalette palette)
  26. {
  27. if (palette == NULL) return (NULL);
  28. free(palette);
  29. return (NULL);
  30. }
  31. int * WWPalette_GetMappedColors(WWPalette palette, int * mapped_colors)
  32. {
  33. int i;
  34. for (i = 0; i < 4; i++) {
  35. mapped_colors[i] = WWPalette_GetMappedColor(palette, i);
  36. }
  37. return (mapped_colors);
  38. }
  39. int WWPalette_SetMappedColors(WWPalette palette, int * mapped_colors)
  40. {
  41. int i;
  42. for (i = 0; i < 4; i++) {
  43. if (mapped_colors == NULL) {
  44. WWPalette_SetMappedColor(palette, i, (i * 2) + ((i == 3) ? 1 : 0));
  45. } else {
  46. WWPalette_SetMappedColor(palette, i, mapped_colors[i]);
  47. }
  48. }
  49. return (0);
  50. }
  51. int WWPalette_GetMappedColor(WWPalette palette, int color)
  52. {
  53. int pixel;
  54. pixel = palette->mapped_color[color];
  55. if (WWPalette_GetTransparent(palette) && (pixel == 0)) {
  56. pixel = -1;
  57. }
  58. return (pixel);
  59. }
  60. int WWPalette_SetMappedColor(WWPalette palette, int color, int mapped_color)
  61. {
  62. if (mapped_color == -1) mapped_color = 0;
  63. return (palette->mapped_color[color] = mapped_color);
  64. }
  65. int WWPalette_PrintData(WWPalette p, FILE * f)
  66. {
  67. int i, n;
  68. n = WWPalette_GetNumber(p);
  69. fprintf(f, "\n");
  70. fprintf(f, "palette[%d] :\tnumber = %d\n", n, WWPalette_GetNumber(p));
  71. fprintf(f, "palette[%d] :\ttransparent = %s\n",
  72. n, true_false(WWPalette_GetTransparent(p)));
  73. for (i = 0; i < 4; i++) {
  74. fprintf(f, "palette[%d] :\tcolor[%d] = %d\n",
  75. n, i, WWPalette_GetMappedColor(p, i));
  76. }
  77. fflush(f);
  78. return (0);
  79. }
  80. /*****************************************************************************/
  81. /* ここまで */
  82. /*****************************************************************************/
  83. /*****************************************************************************/
  84. /* End of File. */
  85. /*****************************************************************************/