8
votes

Comment implémenter un plugin Adobe Photoshop à base de cacao

cacao utilisé pour travailler sur CS3 avec le Trick of Mettre un paquet de cacao à l'intérieur du groupe de plug-in principaux , le chargement de la charbon et l'émission d'une connexion NSApplication (). C'est parce que Photoshop CS3 était uniquement en carbone et utilisé pour décharger les faisceaux du plugin.

Photoshop CS4 utilise le cacao et possède sa propre piscine NsaTorLease en place sur le fil principal.

sur Photoshop CS4 Très simple XIBS / NIBS à base de fenêtres chargés par un NswindowController Travailler hors de la boîte.

Ajoutez simplement une liaison à une commande sur la fenêtre et vous obtiendrez des accidents drôles, éventuellement lorsque vous fermez la fenêtre ou la deuxième fois que vous utilisez le plugin ou même lorsque vous fermez la fermeture de Photoshop.

Pourquoi tout semble bien fonctionner jusqu'à ce que j'utilise des fonctionnalités de cacao avancées? Je suis coincé.

Modifier : Je me suis vraiment retrouvé la solution au problème plus large "Comment utiliser Cacoa dans un plug-in Photoshop CS3 / CS4?". Voir ci-dessous.


0 commentaires

3 Réponses :


0
votes

Je viens de commencer à travailler sur l'écriture d'un plugin à base de cacao pour CS4. Vraiment, il n'y a presque aucune information sur ce sujet et je l'ai trouvé comme je vais.

  • Commencez à partir de cet exemple Apple et assurez-vous de télécharger tout le projet, car il y a quelques petits détails manquants du texte:

    carbone / cacao

    • Choisissez l'un des exemples Photoshop SDK (j'ai utilisé Colormunger) et gardez-le simple à démarrer, alors essayez simplement de remplacer la boîte de dialogue "À propos de", à l'aide de l'exemple Apple comme modèle. Une fois que vous avez travaillé sans problèmes de mémoire, vous devriez être sur votre chemin.

      J'ai été un programmeur Java et Ruby depuis 10 ans, alors mon foo C / C ++ est rouillé et je suis juste d'apprendre l'objectif c comme je vais. Deux «gotchas» que j'ai couru, juste au cas où ...

      • Ne crée pas d'objet de contrôleur dans votre fichier NIB / XIB. Parce que, sur la base de cet exemple Apple, le contrôleur ouvre le fichier NIB dans sa méthode init, et vous obtenez une boucle récursive vraiment intéressante
      • L'exemple Apple est en train d'intégrer les trucs de cacao dans une application C en carbone. Les exemples Adobe sont tous C ++. N'oubliez pas votre externe "C" {} dans votre fichier d'en-tête.

0 commentaires

1
votes

Vous devez créer une nouvelle cible loadable Bundle em> contenant votre NIBS et votre code de cacao. Ajoutez le produit Bundle à la Copier les ressources em> phase de votre plugin. Ensuite, le code d'un plug-in de filtre chargé une fenêtre de cacao avec certaines commandes serait la suivante:

Boolean DoUI (void) {

    // Create the CF Cocoa bundle
    CFBundleRef pluginBundle;
    CFURLRef cocoaBundleURL;
    pluginBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.example.plugin"));
    cocoaBundleURL = CFBundleCopyResourceURL(pluginBundle, 
                                             CFSTR("Cocoa_bundle"), 
                                             CFSTR("bundle"), 
                                             NULL);
    CFBundleRef cocoaBundleRef;
    cocoaBundleRef = CFBundleCreate(kCFAllocatorDefault, cocoaBundleURL);
    CFRelease(cocoaBundleURL);

    // start Cocoa (for CS3)
    NSApplicationLoad(); 

    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

    // load the cocoa bundle by identifier
    NSBundle* cocoaBundle;
    cocoaBundle = [NSBundle bundleWithIdentifier:@"com.example.plugin.cocoa"];

    // load the window controller from the bundle
    Class testControllerClass;
    testControllerClass = [cocoaBundle classNamed:@"MyWindowController"];

    MyWindowController* winController = [[testControllerClass alloc] init];
    [NSApp runModalForWindow:[winController window]];
    [[winController window] performClose:nil];
    [winController release];

    // release the bundle
    CFRelease(cocoaBundleRef);

    [pool release];

    return 1;
}


1 commentaires

@Ildan - Avez-vous pu obtenir des liaisons de cacao à travailler dans votre plugin? Consultez la question de la dépassement de ma pile sur le cacao en carbone. J'ai des problèmes avec ça et tout intérieur serait apprécié.



0
votes

CS2 chargera le code PowerPC Mach-O aussi facilement que CS3 / CS4. Quelqu'un a-t-il testé cette approche de cacao dans CS2?

Actuellement, j'utilise du carbone pour CS2 / CS3 / CS4 car il est garanti de fonctionner partout dans les charges du plugin; et cacao pour CS5 bien sûr, que ce soit 32 ou 64 bits.

Chris Cox n'est pas optimiste sur le cacao travaillant dans quoi que ce soit autre que CS5: http://forums.adobe.com/message/3256555#3256555

Alors, quelle est la vraie affaire ici? Il est difficile d'ignorer les conseils de la bouche du cheval.


0 commentaires