151{
154 DWORD chunkSize, StreamSize, StreamCount, ListSize[3], ListCount[3];
156
157 FIXME(
"(%p, %p): Loading not implemented yet\n",
This, pStm);
158 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
159 IStream_Read (pStm, &chunkSize,
sizeof(
DWORD),
NULL);
161 switch (chunkID) {
163 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
165 StreamSize = chunkSize -
sizeof(
FOURCC);
166 StreamCount = 0;
167 switch (chunkID) {
169 TRACE_(dmfile)(
": chordmap form\n");
170 do {
171 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
172 IStream_Read (pStm, &chunkSize,
sizeof(
FOURCC),
NULL);
173 StreamCount +=
sizeof(
FOURCC) +
sizeof(
DWORD) + chunkSize;
175 switch (chunkID) {
177 TRACE_(dmfile)(
": GUID chunk\n");
179 IStream_Read (pStm, &
This->dmobj.desc.guidObject, chunkSize,
NULL);
180 break;
181 }
183 TRACE_(dmfile)(
": version chunk\n");
185 IStream_Read (pStm, &
This->dmobj.desc.vVersion, chunkSize,
NULL);
186 break;
187 }
189 TRACE_(dmfile)(
": category chunk\n");
191 IStream_Read (pStm,
This->dmobj.desc.wszCategory, chunkSize,
NULL);
192 break;
193 }
195 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
197 ListSize[0] = chunkSize -
sizeof(
FOURCC);
198 ListCount[0] = 0;
199 switch (chunkID) {
201 TRACE_(dmfile)(
": UNFO list\n");
202 do {
203 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
204 IStream_Read (pStm, &chunkSize,
sizeof(
FOURCC),
NULL);
205 ListCount[0] +=
sizeof(
FOURCC) +
sizeof(
DWORD) + chunkSize;
207 switch (chunkID) {
208
209
212 TRACE_(dmfile)(
": name chunk\n");
214 IStream_Read (pStm,
This->dmobj.desc.wszName, chunkSize,
NULL);
215 break;
216 }
219 TRACE_(dmfile)(
": artist chunk (ignored)\n");
221 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
222 break;
223 }
226 TRACE_(dmfile)(
": copyright chunk (ignored)\n");
228 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
229 break;
230 }
233 TRACE_(dmfile)(
": subject chunk (ignored)\n");
235 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
236 break;
237 }
240 TRACE_(dmfile)(
": comment chunk (ignored)\n");
242 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
243 break;
244 }
245 default: {
246 TRACE_(dmfile)(
": unknown chunk (irrelevant & skipping)\n");
248 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
249 break;
250 }
251 }
252 TRACE_(dmfile)(
": ListCount[0] = %ld < ListSize[0] = %ld\n", ListCount[0], ListSize[0]);
253 } while (ListCount[0] < ListSize[0]);
254 break;
255 }
256 default: {
257 TRACE_(dmfile)(
": unknown (skipping)\n");
259 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
260 break;
261 }
262 }
263 break;
264 }
265 default: {
266 TRACE_(dmfile)(
": unknown chunk (irrelevant & skipping)\n");
268 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
269 break;
270 }
271 }
272 TRACE_(dmfile)(
": StreamCount[0] = %ld < StreamSize[0] = %ld\n", StreamCount, StreamSize);
273 } while (StreamCount < StreamSize);
274 break;
275 }
276 default: {
277 TRACE_(dmfile)(
": unexpected chunk; loading failed)\n");
279 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
281 }
282 }
283 TRACE_(dmfile)(
": reading finished\n");
284 break;
285 }
286 default: {
287 TRACE_(dmfile)(
": unexpected chunk; loading failed)\n");
289 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
291 }
292 }
293
295}
static IDirectMusicChordMapImpl * impl_from_IPersistStream(IPersistStream *iface)
#define DMUS_FOURCC_GUID_CHUNK
#define DMUS_FOURCC_UNAM_CHUNK
#define DMUS_FOURCC_VERSION_CHUNK
#define DMUS_FOURCC_UCOP_CHUNK
#define DMUS_FOURCC_UART_CHUNK
#define DMUS_FOURCC_UNFO_LIST
#define DMUS_FOURCC_UCMT_CHUNK
#define DMUS_FOURCC_USBJ_CHUNK
#define DMUS_FOURCC_CATEGORY_CHUNK
#define DMUS_OBJ_CATEGORY
#define FOURCC(a, b, c, d)
#define mmioFOURCC(c0, c1, c2, c3)
static __inline const char * debugstr_fourcc(unsigned int cc)