Quartz remplacer KillPicture() de QuickdrawAPI.h
laudema
Membre
Bonjour,
Je voudrais utiliser le code offert par twain.org à http://twain.org/mac.shtm dans l'application TwainClientCocoa mais j'ai un warning dont je voudrais me débarrasser à cause de la fonction KillImage() [tt]deprecated[/tt].
Si je ne peux pas trouver de solution pour "tuer" le PicHandle j'aurais aimé le remplacer.
Un picHandle est un pointeur sur un pointeur sur une structure, si j'ai bien compris l'entête et les pointeurs ...
Mais je n'ai pas trouvé de telle structure dans Quartz et je ne sais pas par quoi la remplacer puisque TWAcquire(&hPict) et le reste du code en C attendent ça.
Je voudrais utiliser le code offert par twain.org à http://twain.org/mac.shtm dans l'application TwainClientCocoa mais j'ai un warning dont je voudrais me débarrasser à cause de la fonction KillImage() [tt]deprecated[/tt].
<br />- (IBAction)Aquire:(id)sender<br />{<br /> PicHandle hPict;<br /><br /> TWAcquire ( &hPict );<br /> if (hPict)<br /> {<br /> NSImage* image;<br /> HLock((Handle)hPict);<br /> image = [[NSImage alloc] initWithData:[NSData dataWithBytes:*hPict length:GetHandleSize((Handle)hPict)]];<br /> HUnlock((Handle)hPict);<br /> [mImage setImage:image];<br /> [image release];<br /> KillPicture(hPict);<br /> }<br />}<br />
Si je ne peux pas trouver de solution pour "tuer" le PicHandle j'aurais aimé le remplacer.
Un picHandle est un pointeur sur un pointeur sur une structure, si j'ai bien compris l'entête et les pointeurs ...
<br />struct Picture {<br /> short picSize;<br /> Rect picFrame;<br />};<br />typedef struct Picture Picture;<br />typedef Picture * PicPtr;<br />typedef PicPtr * PicHandle;<br />struct MacPolygon {<br /> short polySize;<br /> Rect polyBBox;<br /> Point polyPoints[1];<br />};<br />
Mais je n'ai pas trouvé de telle structure dans Quartz et je ne sais pas par quoi la remplacer puisque TWAcquire(&hPict) et le reste du code en C attendent ça.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quelques infos:
- les handles sont bien des pointeurs de pointeurs, autrefois nécessaires pour permettre de déplacer les blocs de mémoire et éviter sa fragmentation. C'est totalement inutile aujourd'hui. HLock() sert (servait) à verrouiller le bloc à son adresse courante, pour pouvoir se servir directement du pointeur.
- sous Classic, il existait le format PICT, un format plus ou moins vectoriel. D'après mes souvenirs, c'est à ça que correspond un PicHandle. La méthode -[NSImage initWithData:] doit savoir utiliser les données du format PICT. Premier problème: il me semble que le support du PICT a été retiré dans Cocoa depuis le passage au 64 bits.
Sinon, voici le format, on trouve au moins une correspondance avec ta structure.
http://www.fileformat.info/format/macpict/egff.htm
Le problème, c'est qu'une Picture ne peut certainement pas être seulement ce qui est décrit dans la structure: il y a forcément des infos après, ne serait-ce que la bitmap numérisée par le scanner.
Bref, désolé, mais je ne vois pas comment remplacer KillPicture(). Essaie plutôt de trouver une bibliothèque Twain un poil plus moderne. ça fait quand même dix ans qu'on est passé à Mac OS X et Quartz.
Avec l'abonnement developer on a droit à deux "Technical Support Incident" est ce que je ne pourrais pas en utiliser un pour ça ?
Pour l'instant je ne sais pas encore à quoi ça peut servir à vrai dire, je vais donc essayer de ce pas !
Je ne pense vraiment pas. Habituellement, ça permet d'avoir un ingé qui t'aide à résoudre un problème technique, mais là , Twain a laissé sa lib à l'abandon, et ne vont pas la mettre à jour pour tes beaux yeux. Je suis sûr que quelqu'un d'autre a créé une lib Twain.
Même le site web peut être daté de 2001, preuve en est la photo minuscule d'iMac G3.
Je vais quand même leur demander ce que je peux faire, peut être qu'ils connaissent justement une librairie TWAIN plus récente ou qu'ils ont un moyen de mieux contrôler le scanner via ImageCaptureCore.framework que je n'ai pas vu.
De toutes façons je n'ai plus que 2 mois pour utiliser mes deux jetons de support