comparison tools/lib64gfx.c @ 2398:0b1928ed902f

Merge dmC64ImageGetNumBlocks() into dmC64SetupImageData().
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 10 Jan 2020 01:45:46 +0200
parents 2dbbc1c91231
children c5a32812dd97
comparison
equal deleted inserted replaced
2397:698ee976fb23 2398:0b1928ed902f
94 buf->data[offs ] == (addr & 0xff) && 94 buf->data[offs ] == (addr & 0xff) &&
95 buf->data[offs + 1] == ((addr >> 8) & 0xff); 95 buf->data[offs + 1] == ((addr >> 8) & 0xff);
96 } 96 }
97 97
98 98
99 int dmC64ImageGetNumBlocks(const DMC64ImageFormat *fmt) 99 int dmC64MemBlockAlloc(DMC64MemBlock *blk, const size_t size)
100 {
101 if ((blk->data = dmMalloc0(size)) == NULL)
102 return DMERR_MALLOC;
103
104 blk->size = size;
105 return DMERR_OK;
106 }
107
108
109 int dmC64MemBlockReAlloc(DMC64MemBlock *blk, const size_t size)
110 {
111 // Reallocate only if new size is larger
112 if (size <= blk->size)
113 return DMERR_OK;
114
115 if ((blk->data = dmRealloc(blk->data, size)) == NULL)
116 return DMERR_MALLOC;
117
118 dmMemset(blk->data + blk->size, 0, size - blk->size);
119
120 blk->size = size;
121 return DMERR_OK;
122 }
123
124
125 int dmC64MemBlockCopy(DMC64MemBlock *dst, const DMC64MemBlock *src)
126 {
127 if (src->data != NULL && src->size > 0)
128 {
129 dst->size = src->size;
130 if ((dst->data = dmMalloc(src->size)) == NULL)
131 return DMERR_MALLOC;
132
133 memcpy(dst->data, src->data, src->size);
134 return DMERR_OK;
135 }
136 else
137 return DMERR_INVALID_DATA;
138 }
139
140
141 void dmC64MemBlockFree(DMC64MemBlock *blk)
142 {
143 if (blk != NULL)
144 {
145 dmFreeR(&blk->data);
146 blk->size = 0;
147 }
148 }
149
150
151 static void dmC64SetupImageData(DMC64Image *img, const DMC64ImageFormat *fmt)
100 { 152 {
101 int nblocks = 0; 153 int nblocks = 0;
102 for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++) 154 for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++)
103 { 155 {
104 const DMC64EncDecOp *op = fmtGetEncDecOp(fmt, i); 156 const DMC64EncDecOp *op = fmtGetEncDecOp(fmt, i);
107 159
108 if (op->bank > nblocks) 160 if (op->bank > nblocks)
109 nblocks = op->bank; 161 nblocks = op->bank;
110 } 162 }
111 163
112 return nblocks + 1;
113 }
114
115
116 int dmC64MemBlockAlloc(DMC64MemBlock *blk, const size_t size)
117 {
118 if ((blk->data = dmMalloc0(size)) == NULL)
119 return DMERR_MALLOC;
120
121 blk->size = size;
122 return DMERR_OK;
123 }
124
125
126 int dmC64MemBlockReAlloc(DMC64MemBlock *blk, const size_t size)
127 {
128 // Reallocate only if new size is larger
129 if (size <= blk->size)
130 return DMERR_OK;
131
132 if ((blk->data = dmRealloc(blk->data, size)) == NULL)
133 return DMERR_MALLOC;
134
135 dmMemset(blk->data + blk->size, 0, size - blk->size);
136
137 blk->size = size;
138 return DMERR_OK;
139 }
140
141
142 int dmC64MemBlockCopy(DMC64MemBlock *dst, const DMC64MemBlock *src)
143 {
144 if (src->data != NULL && src->size > 0)
145 {
146 dst->size = src->size;
147 if ((dst->data = dmMalloc(src->size)) == NULL)
148 return DMERR_MALLOC;
149
150 memcpy(dst->data, src->data, src->size);
151 return DMERR_OK;
152 }
153 else
154 return DMERR_INVALID_DATA;
155 }
156
157
158 void dmC64MemBlockFree(DMC64MemBlock *blk)
159 {
160 if (blk != NULL)
161 {
162 dmFreeR(&blk->data);
163 blk->size = 0;
164 }
165 }
166
167
168 static void dmC64SetupImageData(DMC64Image *img, const DMC64ImageFormat *fmt)
169 {
170 img->fmt = fmt->format; 164 img->fmt = fmt->format;
171 img->nblocks = dmC64ImageGetNumBlocks(fmt); 165 img->nblocks = nblocks + 1;
172 166
173 dmMemset(img->extraInfo, 0, sizeof(img->extraInfo)); 167 dmMemset(img->extraInfo, 0, sizeof(img->extraInfo));
174 img->extraInfo[D64_EI_MODE] = fmt->format->mode; 168 img->extraInfo[D64_EI_MODE] = fmt->format->mode;
175 } 169 }
176 170