What's Wrong With This Code?
i've been trying test automaton plugin work. builds correctly no errors or warnings yet when attempt use it, no results. no errors either. intended copy > make new layer > paste. code below. sample code used makeselectfill plugin modified old 6.0 sdk along using older copy of visual c++ can open project. appreciated.
//-------------------------------------------------------------------------------
#include <stdio.h>//defines sprintf
#include "piuget.h"//defines piugetinfo, not used in makeselectfill
#include "pidefines.h"//defines __pimac__, __piwin__
#include "pigeneral.h"//defines kpsphotoshopcaller, kpsdoit
#include "spinterf.h"//defines kspinterfacecaller, kspinterfaceaboutselector,
//kspinterfacestartupselector,
#include "spbasic.h"//defines spbasicsuite
#include "spaccess.h"//defines kspaccesscaller, kspaccessreloadselector,
//kspaccessunloadselector, not used in makeselectfill
#include "piactions.h"//defines psactiondescriptorprocs, psactionreferenceprocs,
//psactioncontrolprocs
#include "admbasic.h"//contains cross-platform alert dialogs, boxes,
//file , directory dialogs, string conversions
#include "piusuites.h"//defines piusuitesacquire , piusuitesrelease
//-------------------------------------------------------------------------------
// function prototypes.
//-------------------------------------------------------------------------------
dllexport spapi sperr pluginmain(const char* caller,
const char* selector,
const void* data );
//-------------------------------------------------------------------------------
// globals -- define global variables plug-in scope.
//-------------------------------------------------------------------------------
spbasicsuite *sspbasic = null;// basic suite
//create pointers suites
psactiondescriptorprocs *spsactiondescriptor = null;
psactionreferenceprocs *spsactionreference = null;
psactioncontrolprocs *spsactioncontrol = null;
psactionlistprocs *spsactionlist = null;
admbasicsuite *sadmbasic = null;
_acquirelist mysuites[] =
{
kpsactiondescriptorsuite, kpsactiondescriptorsuiteversion, (void **)&spsactiondescriptor,
kpsactionreferencesuite, kpsactionreferencesuiteversion, (void **)&spsactionreference,
//note previous version of control suite used compatibility 5.5
kpsactioncontrolsuite, kpsactioncontrolsuiteprevversion, (void **)&spsactioncontrol,
kpsactionlistsuite, kpsactionlistsuiteversion, (void **)&spsactionlist,
kadmbasicsuite, kadmbasicsuiteversion, (void **)&sadmbasic
};
//-------------------------------------------------------------------------------
//
// pluginmain
//
// calls plug-in module come through routine.
// must placed first in resource. achieve this,
// development systems require first routine
// in source.
//
// entrypoint "pascal void" macintosh,
// "void" windows.
//
//-------------------------------------------------------------------------------
dllexport spapi sperr pluginmain(const char* caller, // calling
const char* selector, // want
const void* data )// message
{
sperr error = kspnoerror;
spmessagedata *basicmessage = null;
// messages contain spmessagedata*
basicmessage = (spmessagedata *) data;
sspbasic = basicmessage->basic;
// acquire global suite pointers now
error = piusuitesacquire(sspbasic,
mysuites,
sizeof (mysuites) / sizeof (_acquirelist));
if (error) return error;
// check sp interface callers
if (sspbasic->isequal((char*)caller, kspinterfacecaller))
{
if (sspbasic->isequal((char*)selector, kspinterfaceaboutselector))
{
}
}
// photoshop calling
if (sspbasic->isequal((char*)caller, kpsphotoshopcaller))
{
// 1 , message
if (sspbasic->isequal((char*)selector, kpsdoit))
{
}
}
// clean up, free memory
piusuitesrelease(sspbasic,
mysuites,
sizeof (mysuites) / sizeof (_acquirelist));
return error;
}/*end pluginmain*/
//-------------------------------------------------------------------------------
//
// test plugin
//
// plugin used test.
// functions copy > make new layer > paste
//
//
//-------------------------------------------------------------------------------
sperr copy(void)
{
piactiondescriptor result = null;
sperr error = kspnoerror;
error = spsactioncontrol->play(&result, eventcopy, null, plugindialogsilent);
if (error) goto returnerror;
returnerror:
if (result != null) spsactiondescriptor->free(result);
return error;
}
//make new layer here//
sperr makelayer(void)
{
piactiondescriptor descriptor = null;
piactionreference reference = null;
piactiondescriptor result = null;
sperr error = kspnoerror;
error = spsactiondescriptor->make(&descriptor);
if (error) goto returnerror;
// move top of routine!
error = spsactionreference->make(&reference);
if (error) goto returnerror;
error = spsactionreference->putclass(reference,classlayer);
if (error) goto returnerror;
error = spsactiondescriptor->putreference(descriptor,keynull,reference);
if (error) goto returnerror;
error = spsactioncontrol->play(&result,eventmake,descriptor,plugindialogsilent);
if (error) goto returnerror;
returnerror:
if (result != null) spsactiondescriptor->free(result);
if (descriptor != null) spsactiondescriptor->free(descriptor);
if (reference != null) spsactionreference->free(reference);
return error;
}
//end make new layer//
//start paste//
sperr paste(void)
{
piactiondescriptor result = null;
sperr error = kspnoerror;
error = spsactioncontrol->play(&result,eventpaste,null,plugindialogsilent);
if (error) goto returnerror;
returnerror:
if (result != null) spsactiondescriptor->free(result);
return error;
}
//end paste//
// windows plug-ins need dllmain
#ifdef __piwin__
bool apientry dllmain( handle hmodule,
dword ul_rearson_for_call,
lpvoid lpreserved )
{
return true;
}
#endif
almost 500 views , no replies?
More discussions in Photoshop Plugin and Companion App SDK
adobe
Comments
Post a Comment