#include <maya/MPxCommand.h>
#include <maya/MStatus.h>
#include <maya/MArgList.h>
#include <maya/MFnPlugin.h>
#include <maya/MObject.h>
#include <maya/MGlobal.h>
#include <maya/MString.h>
#include <maya/MPoint.h>
#include "iffreader.h"
#ifndef OSMac_
#include <maya/MIOStream.h>
#endif
#define IFFCHECKERR(stat, call) \
if (!stat) { \
MString string = reader.errorString(); \
string += " in method "; \
string += #call; \
displayError (string); \
return MS::kFailure; \
}
{
public:
iffPixel();
virtual ~iffPixel();
static void* creator();
private:
int r,g,b,a;
float d;
bool useDepth;
};
iffPixel::iffPixel()
{
}
iffPixel::~iffPixel() {}
void* iffPixel::creator()
{
return new iffPixel;
}
bool iffPixel::isUndoable() const
{
return true;
}
{
}
{
char buffer [256];
sprintf (buffer, "%d", n);
}
{
displayError ("Syntax: iffPixel file x y [-depth]");
}
int x,y;
{
if (lastArg !=
MString (
"-depth")) {
displayError ("Syntax: iffPixel file x y [-depth]");
}
useDepth = true;
}
else
useDepth = false;
IFFimageReader reader;
stat = reader.open (fileName);
IFFCHECKERR (stat, open);
int w,h;
stat = reader.getSize (w,h);
IFFCHECKERR (stat, getSize);
if (x < 0 || x > w || y < 0 || y > h) {
MString message (
"Co-ordinates out of range. Size of image is ");
message += itoa (w);
message += "+";
message += itoa (h);
displayError (message);
}
stat = reader.readImage ();
IFFCHECKERR (stat, readImage);
if (useDepth)
{
if (!reader.hasDepthMap ()) {
displayError ("Image has no depth map");
}
stat = reader.getDepth (x,y,&d);
}
else
{
if (!reader.isRGB () && !reader.isGrayscale ()) {
displayError ("Image has no RGB data");
}
stat = reader.getPixel (x,y,&r,&g,&b,&a);
}
IFFCHECKERR (stat, getPixel);
stat = reader.close ();
IFFCHECKERR (stat, close);
return redoIt();
}
{
clearResult();
if (useDepth) {
appendToResult (d);
} else {
appendToResult( r );
appendToResult( g );
appendToResult( b );
appendToResult( a );
}
}
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"3.0",
"Any");
status = plugin.registerCommand( "iffPixel", iffPixel::creator );
if (!status)
status.
perror(
"registerCommand");
return status;
}
{
status = plugin.deregisterCommand( "iffPixel" );
if (!status)
status.
perror(
"deregisterCommand");
return status;
}