source: trunk/src/kernel32/cvtcursorgrp.cpp@ 5386

Last change on this file since 5386 was 5386, checked in by sandervl, 24 years ago

removed cursor(group) conversion code

File size: 6.0 KB
Line 
1/* $Id: cvtcursorgrp.cpp,v 1.11 2001-03-27 16:18:26 sandervl Exp $ */
2
3/*
4 * PE2LX cursor group code
5 *
6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
7 *
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#define INCL_GPIBITMAPS
13#define INCL_BITMAPFILEFORMAT
14#define INCL_DOSFILEMGR /* File Manager values */
15#define INCL_DOSERRORS /* DOS Error values */
16#define INCL_DOSPROCESS /* DOS Process values */
17#define INCL_DOSMISC /* DOS Miscellanous values */
18#define INCL_WIN
19#include <os2wrap.h>
20#include <stdio.h>
21#include <string.h>
22#include <stdlib.h>
23#include <string.h>
24#include <win32type.h>
25#include <win32api.h>
26#include <winconst.h>
27#include <wincursor.h>
28#include <win\cursoricon.h>
29#include <misc.h>
30#include "cvtresource.h"
31#include <winres.h>
32
33#define DBG_LOCALLOG DBG_cvtcursorgrp
34#include "dbglocal.h"
35
36//CURSORICONFILEDIR
37
38//******************************************************************************
39//******************************************************************************
40void * WIN32API ConvertCursorGroupToOS2(LPVOID ptr)
41{
42 CURSORICONFILEDIR *chdr = (CURSORICONFILEDIR *)ptr;
43 int i, groupsize = 0, os2cursorsize;
44 BITMAPARRAYFILEHEADER2 *bafh, *orgbafh;
45 CursorComponent *cursorhdr;
46 void *os2cursor;
47 HRSRC hRes;
48
49 dprintf(("ConvertCursorGroup"));
50 dprintf(("Cursor Group type : %d", chdr->idType));
51 dprintf(("Cursor Group count: %d", chdr->idCount));
52 for(i=0;i<chdr->idCount;i++) {
53 dprintf2(("Cursor : %d", chdr->idEntries[i].dwDIBOffset));
54 dprintf2(("Width : %d", (int)chdr->idEntries[i].bWidth));
55 dprintf2(("Height : %d", (int)chdr->idEntries[i].bHeight));
56 dprintf2(("Bits : %d", chdr->idEntries[i].bColorCount));
57 dprintf2(("ResBytes: %d", chdr->idEntries[i].dwDIBSize));
58
59 groupsize += chdr->idEntries[i].dwDIBSize;
60 }
61 bafh = (BITMAPARRAYFILEHEADER2 *)malloc(groupsize+chdr->idCount*sizeof(BITMAPARRAYFILEHEADER2));
62 orgbafh = bafh;
63
64 rdir = (CursorResDir *)(chdr + 1);
65 for(i=0;i<chdr->idCount;i++) {
66 bafh->usType = BFT_BITMAPARRAY;
67 bafh->cbSize = sizeof(BITMAPARRAYFILEHEADER2);
68 bafh->cxDisplay = 0;
69 bafh->cyDisplay = 0;
70 hRes = FindResourceA(module->getInstanceHandle(),
71 (LPCSTR)rdir->wNameOrdinal, (LPSTR)NTRT_CURSOR);
72
73 if(hRes == NULL) {
74 dprintf(("Can't find cursor!"));
75 rdir++;
76 continue;
77 }
78
79 cursorhdr = (CursorComponent *)LockResource(LoadResource(module->getInstanceHandle(), hRes));
80 os2cursor = ConvertCursor(cursorhdr, SizeofResource(module->getInstanceHandle(), hRes), &os2cursorsize, (int)bafh - (int)orgbafh + sizeof(BITMAPARRAYFILEHEADER2)-sizeof(BITMAPFILEHEADER2));
81
82 if(os2cursor == NULL) {
83 dprintf(("Can't convert cursor!"));
84 rdir++;
85 continue;
86 }
87
88 if(i != chdr->cwCount -1) {
89 bafh->offNext = (int)&bafh->bfh2 - (int)orgbafh + os2cursorsize;
90 }
91 else bafh->offNext = 0;
92
93 memcpy((char *)&bafh->bfh2, os2cursor, os2cursorsize);
94 free(os2cursor);
95
96 bafh = (BITMAPARRAYFILEHEADER2 *)((int)&bafh->bfh2 + os2cursorsize);
97
98 rdir++;
99 }
100 return (void *)orgbafh;
101}
102//******************************************************************************
103//******************************************************************************
104void *ConvertCursorGroup(CursorHeader *chdr, int size, Win32ImageBase *module)
105{
106 CursorResDir *rdir = (CursorResDir *)(chdr + 1);
107 int i, groupsize = 0, os2cursorsize;
108 BITMAPARRAYFILEHEADER2 *bafh, *orgbafh;
109 CursorComponent *cursorhdr;
110 void *os2cursor;
111 HRSRC hRes;
112
113 dprintf(("ConvertCursorGroup"));
114 dprintf(("Cursor Group type : %d", chdr->wType));
115 dprintf(("Cursor Group count: %d", chdr->cwCount));
116 for(i=0;i<chdr->cwCount;i++) {
117 dprintf2(("Cursor : %d", rdir->wNameOrdinal));
118 dprintf2(("Width : %d", (int)rdir->wWidth));
119 dprintf2(("Height : %d", (int)rdir->wHeight));
120 dprintf2(("Bits : %d", rdir->wBitCount));
121 dprintf2(("ResBytes: %d", rdir->lBytesInRes));
122 hRes = FindResourceA(module->getInstanceHandle(),
123 (LPCSTR)rdir->wNameOrdinal, (LPSTR)NTRT_CURSOR);
124
125 groupsize += QueryConvertedResourceSize(module->getInstanceHandle(), (char *)NTRT_CURSOR, hRes);
126 rdir++;
127 }
128 bafh = (BITMAPARRAYFILEHEADER2 *)malloc(groupsize+chdr->cwCount*sizeof(BITMAPARRAYFILEHEADER2));
129 orgbafh = bafh;
130
131 rdir = (CursorResDir *)(chdr + 1);
132 for(i=0;i<chdr->cwCount;i++) {
133 bafh->usType = BFT_BITMAPARRAY;
134 bafh->cbSize = sizeof(BITMAPARRAYFILEHEADER2);
135 bafh->cxDisplay = 0;
136 bafh->cyDisplay = 0;
137 hRes = FindResourceA(module->getInstanceHandle(),
138 (LPCSTR)rdir->wNameOrdinal, (LPSTR)NTRT_CURSOR);
139
140 if(hRes == NULL) {
141 dprintf(("Can't find cursor!"));
142 rdir++;
143 continue;
144 }
145
146 cursorhdr = (CursorComponent *)LockResource(LoadResource(module->getInstanceHandle(), hRes));
147 os2cursor = ConvertCursor(cursorhdr, SizeofResource(module->getInstanceHandle(), hRes), &os2cursorsize, (int)bafh - (int)orgbafh + sizeof(BITMAPARRAYFILEHEADER2)-sizeof(BITMAPFILEHEADER2));
148
149 if(os2cursor == NULL) {
150 dprintf(("Can't convert cursor!"));
151 rdir++;
152 continue;
153 }
154
155 if(i != chdr->cwCount -1) {
156 bafh->offNext = (int)&bafh->bfh2 - (int)orgbafh + os2cursorsize;
157 }
158 else bafh->offNext = 0;
159
160 memcpy((char *)&bafh->bfh2, os2cursor, os2cursorsize);
161 free(os2cursor);
162
163 bafh = (BITMAPARRAYFILEHEADER2 *)((int)&bafh->bfh2 + os2cursorsize);
164
165 rdir++;
166 }
167 return (void *)orgbafh;
168}
169//******************************************************************************
170//******************************************************************************
Note: See TracBrowser for help on using the repository browser.