Mercurial > hg > dmlib
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 |