//- // ========================================================================== // Copyright (C) 1995 - 2005 Alias Systems Corp. and/or its licensors. All // rights reserved. // // The coded instructions, statements, computer programs, and/or related // material (collectively the "Data") in these files are provided by Alias // Systems Corp. ("Alias") and/or its licensors for the exclusive use of the // Customer (as defined in the Alias Software License Agreement that // accompanies this Alias software). Such Customer has the right to use, // modify, and incorporate the Data into other products and to distribute such // products for use by end-users. // // THE DATA IS PROVIDED "AS IS". ALIAS HEREBY DISCLAIMS ALL WARRANTIES // RELATING TO THE DATA, INCLUDING, WITHOUT LIMITATION, ANY AND ALL EXPRESS OR // IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. IN NO EVENT SHALL ALIAS BE LIABLE FOR ANY DAMAGES // WHATSOEVER, WHETHER DIRECT, INDIRECT, SPECIAL, OR PUNITIVE, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, OR IN EQUITY, // ARISING OUT OF ACCESS TO, USE OF, OR RELIANCE UPON THE DATA. // ========================================================================== //+ #include #include #include #include #include #include #include #include #include "iffreader.h" #ifndef OSMac_ #include #endif #define IFFCHECKERR(stat, call) \ if (!stat) { \ MString string = reader.errorString(); \ string += " in method "; \ string += #call; \ displayError (string); \ return MS::kFailure; \ } class iffInfo : public MPxCommand { public: iffInfo(); virtual ~iffInfo(); MStatus doIt ( const MArgList& args ); MStatus redoIt (); MStatus undoIt (); bool isUndoable() const; static void* creator(); private: MString result; }; iffInfo::iffInfo() { } iffInfo::~iffInfo() {} void* iffInfo::creator() { return new iffInfo; } bool iffInfo::isUndoable() const { return true; } MStatus iffInfo::undoIt() { return MS::kSuccess; } MString itoa (int n) { char buffer [256]; sprintf (buffer, "%d", n); return MString (buffer); } MStatus iffInfo::doIt( const MArgList& args ) { MString componentName; if (args.length () != 1 ) { displayError ("Syntax: iffInfo file"); return MS::kFailure; } MString fileName; args.get (0, fileName); IFFimageReader reader; MStatus stat; stat = reader.open (fileName); IFFCHECKERR (stat, open); int bytesPerChannel = reader.getBytesPerChannel (); int w,h; stat = reader.getSize (w, h); IFFCHECKERR (stat, getSize); result = "\nResolution: "; result += itoa (w); result += "x"; result += itoa (h); result += "\n"; if (reader.isRGB () || reader.isGrayscale ()) { if (reader.isRGB ()) { result += "RGB"; if (reader.hasAlpha ()) result += "A"; } else result += "Grayscale"; result += " data with "; if (bytesPerChannel == 2) result += "16"; else result += "8"; result += " bits per channel\n"; } if (reader.hasDepthMap ()) { result += "Image has a depth map\n"; } else { result += "Image does not have a depth map\n"; } stat = reader.close (); IFFCHECKERR (stat, close); return redoIt(); } MStatus iffInfo::redoIt() { clearResult(); appendToResult (result); return MS::kSuccess; } MStatus initializePlugin( MObject obj ) { MStatus status; MFnPlugin plugin( obj, "Alias", "3.0", "Any"); status = plugin.registerCommand( "iffInfo", iffInfo::creator ); if (!status) status.perror("registerCommand"); return status; } MStatus uninitializePlugin( MObject obj ) { MStatus status; MFnPlugin plugin( obj ); status = plugin.deregisterCommand( "iffInfo" ); if (!status) status.perror("deregisterCommand"); return status; }