home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / include / k3d / k3dsdk / istream_ri.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-11-07  |  17.6 KB  |  265 lines

  1. #ifndef K3DSDK_ISTREAM_RI_H
  2. #define K3DSDK_ISTREAM_RI_H
  3.  
  4. // K-3D
  5. // Copyright (c) 1995-2006, Timothy M. Shead
  6. //
  7. // Contact: tshead@k-3d.com
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. //
  14. // This program is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. // General Public License for more details.
  18. //
  19. // You should have received a copy of the GNU General Public
  20. // License along with this program; if not, write to the Free Software
  21. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  22.  
  23. /** \file
  24.     \author Tim Shead (tshead@k-3d.com)
  25. */
  26.  
  27. #include "iunknown.h"
  28. #include "types_ri.h"
  29.  
  30. #include <boost/array.hpp>
  31.  
  32. namespace k3d
  33. {
  34.  
  35. namespace ri
  36. {
  37.  
  38. /// Abstract binding to the Pixar RenderMan interface
  39. class istream :
  40.     public virtual iunknown
  41. {
  42. public:
  43.     virtual bool set_inline_types(const bool Inline) = 0;
  44.  
  45.     virtual const light_handle RiAreaLightSourceV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  46.     virtual void RiAtmosphereV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  47.     virtual void RiAttributeBegin() = 0;
  48.     virtual void RiAttributeEnd() = 0;
  49.     virtual void RiAttributeV(const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  50.     virtual void RiBasis(const matrix& UBasis, const unsigned_integer UStep, const matrix& VBasis, const unsigned_integer VStep) = 0;
  51.     virtual void RiBasis(const string& UBasis, const unsigned_integer UStep, const string& VBasis, const unsigned_integer VStep) = 0;
  52.     virtual void RiBlobbyV(const unsigned_integer NLeaf, const unsigned_integers& Codes, const reals& Floats, const strings& Strings, const parameter_list& Parameters = parameter_list()) = 0;
  53.     virtual void RiBound(const boost::array<real, 6>& Bound) = 0;
  54.     virtual void RiClipping(const real Hither, const real Yon) = 0;
  55.     virtual void RiColor(const color& Color) = 0;
  56.     virtual void RiColorSamples(const unsigned_integer ParameterCount, const reals& nRGB, const reals& RGBn) = 0;
  57.     virtual void RiComment(const string& Comment) = 0;
  58.     virtual void RiConcatTransform(const matrix& Transform) = 0;
  59.     virtual void RiConeV(const real Height, const real Radius, const real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  60.     virtual void RiCoordSysTransform(const string& Space) = 0;
  61.     virtual void RiCoordinateSystem(const string& Space) = 0;
  62.     virtual void RiCropWindow(const real XMin, const real XMax, const real YMin, const real YMax) = 0;
  63.     virtual void RiCurvesV(const string& Type, const unsigned_integers& VertexCounts, const string& Wrap, const parameter_list& Parameters = parameter_list()) = 0;
  64.     virtual void RiCylinderV(const real Radius, const real ZMin, const real ZMax, const real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  65.     virtual void RiDeclare(const string& Name, const string& Type) = 0;
  66.     virtual void RiDeformationV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  67.     virtual void RiDepthOfField(const real FStop, const real FocalLength, const real FocalDistance) = 0;
  68.     virtual void RiDetail(const boost::array<real, 6>& Bound) = 0;
  69.     virtual void RiDetailRange(const real MinVis, const real LowTran, const real UpTran, const real MaxVis) = 0;
  70.     virtual void RiDiskV(real Height, real Radius, real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  71.     virtual void RiDisplacementV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  72.     virtual void RiDisplayV(const string& Name, const string& Type, const string& Mode, const parameter_list& Parameters = parameter_list()) = 0;
  73.     virtual void RiErrorHandler(const string& Style) = 0;
  74.     virtual void RiExposure(const real Gain, const real Gamma) = 0;
  75.     virtual void RiExteriorV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  76.     virtual void RiFormat(const unsigned_integer XResolution, const unsigned_integer YResolution, const real AspectRatio) = 0;
  77.     virtual void RiFrameAspectRatio(const real AspectRatio) = 0;
  78.     virtual void RiFrameBegin(const unsigned_integer FrameNumber) = 0;
  79.     virtual void RiFrameEnd() = 0;
  80.     virtual void RiGeneralPolygonV(const unsigned_integers& VertexCounts, const parameter_list& Parameters = parameter_list()) = 0;
  81.     virtual void RiGeometricApproximation(const string& Type, const real Value) = 0;
  82.     virtual void RiGeometricRepresentation(const string& Type) = 0;
  83.     virtual void RiGeometryV(const string& Type, const parameter_list& Parameters = parameter_list()) = 0;
  84.     virtual void RiHiderV(const string& Type, const parameter_list& Parameters = parameter_list()) = 0;
  85.     virtual void RiHyperboloidV(const point& Point1, const point& Point2, const real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  86.     virtual void RiIdentity() = 0;
  87.     virtual void RiIlluminate(const light_handle LightHandle, const bool OnOff) = 0;
  88.     virtual void RiImagerV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  89.     virtual void RiInteriorV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  90.     virtual const light_handle RiLightSourceV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  91.     virtual void RiMakeCubeFaceEnvironmentV(const string& px, const string& nx, const string& py, const string& ny, const string& pz, const string& nz, const string& texturename, const real fov, const string& swrap, const string& twrap, const string& filterfunc, const real swidth, const real twidth, const parameter_list& Parameters = parameter_list()) = 0;
  92.     virtual void RiMakeLatLongEnvironmentV(const string& picturename, const string& texturename, const string& filterfunc, const real swidth, const real twidth, const parameter_list& Parameters = parameter_list()) = 0;
  93.     virtual void RiMakeShadowV(const string& picturename, const string& texturename, const parameter_list& Parameters = parameter_list()) = 0;
  94.     virtual void RiMakeTextureV(const string& picturename, const string& texturename, const string& swrap, const string& twrap, const string& filterfunc, const real swidth, const real twidth, const parameter_list& Parameters = parameter_list()) = 0;
  95.     virtual void RiMatte(const bool OnOff) = 0;
  96.     virtual void RiMotionBeginV(const sample_times_t& Times) = 0;
  97.     virtual void RiMotionEnd() = 0;
  98.     virtual void RiNewline() = 0;
  99.     virtual void RiNuPatchV(const unsigned_integer UCount, const unsigned_integer UOrder, const reals& UKnot, const real UMin, const real UMax, const unsigned_integer VCount, const unsigned_integer VOrder, const reals& VKnot, const real VMin, const real VMax, const parameter_list& Parameters = parameter_list()) = 0;
  100.     virtual const object_handle RiObjectBegin() = 0;
  101.     virtual void RiObjectEnd() = 0;
  102.     virtual void RiObjectInstance(const object_handle Object) = 0;
  103.     virtual void RiOpacity(const color& Opacity) = 0;
  104.     virtual void RiOptionV(const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  105.     virtual void RiOrientation(const string& Orientation) = 0;
  106.     virtual void RiParaboloidV(const real RMax, const real ZMin, const real ZMax, const real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  107.     virtual void RiPatchMeshV(const string& Type, const unsigned_integer UCount, const string& UWrap, const unsigned_integer VCount, const string& VWrap, const parameter_list& Parameters = parameter_list()) = 0;
  108.     virtual void RiPatchV(const string& Type, const parameter_list& Parameters = parameter_list()) = 0;
  109.     virtual void RiPerspective(const real FieldOfView) = 0;
  110.     virtual void RiPixelFilter(const string& FilterName, const real XWidth, const real YWidth) = 0;
  111.     virtual void RiPixelSamples(const real XSamples, const real YSamples) = 0;
  112.     virtual void RiPixelVariance(const real Variation) = 0;
  113.     virtual void RiPointsGeneralPolygonsV(const unsigned_integers& LoopCounts, const unsigned_integers& VertexCounts, const unsigned_integers& VertexIDs, const parameter_list& Parameters = parameter_list()) = 0;
  114.     virtual void RiPointsPolygonsV(const unsigned_integers& VertexCounts, const unsigned_integers& VertexIDs, const parameter_list& Parameters = parameter_list()) = 0;
  115.     virtual    void RiPointsV(const unsigned_integer VertexCount, const parameter_list& Parameters = parameter_list()) = 0;
  116.     virtual void RiPolygonV(const unsigned_integer VertexCount, const parameter_list& Parameters = parameter_list()) = 0;
  117.     virtual void RiProcDelayedReadArchive(const path& Archive, const bound& BoundingBox) = 0;
  118.     virtual void RiProjectionV(const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  119.     virtual void RiQuantize(const string& Type, const integer One, const integer QMin, const integer QMax, const real Amplitude) = 0;
  120.     virtual void RiReadArchive(const path& Archive) = 0;
  121.     virtual void RiRelativeDetail(const real RelativeDetail) = 0;
  122.     virtual void RiReverseOrientation() = 0;
  123.     virtual void RiRotate(const real angle, const real DX, const real DY, const real DZ) = 0;
  124.     virtual void RiScale(const real DX, const real DY, const real DZ) = 0;
  125.     virtual void RiScreenWindow(const real Left, const real Right, const real Bottom, const real Top) = 0;
  126.     virtual void RiShadingInterpolation(const string& Type) = 0;
  127.     virtual void RiShadingRate(const real Size) = 0;
  128.     virtual void RiShutter(const real SMin, const real SMax) = 0;
  129.     virtual void RiSides(const unsigned_integer Sides) = 0;
  130.     virtual void RiSkew(const real Angle, const real DX1, const real DY1, const real DZ1, const real DX2, const real DY2, const real DZ2) = 0;
  131.     virtual void RiSolidBegin(const string& Type) = 0;
  132.     virtual void RiSolidEnd() = 0;
  133.     virtual void RiSphereV(const real Radius, const real ZMin, const real ZMax, const real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  134.     virtual void RiStructure(const string& Structure) = 0;
  135.     virtual void RiSubdivisionMeshV(const string& Scheme, const unsigned_integers& VertexCounts, const unsigned_integers& VertexIDs, const strings& Tags, const unsigned_integers& ArgCounts, const integers& IntegerArgs, const reals& FloatArgs, const parameter_list& Parameters = parameter_list()) = 0;
  136.     virtual void RiSurfaceV(const path& Path, const string& Name, const parameter_list& Parameters = parameter_list()) = 0;
  137.     virtual void RiTextureCoordinates(const real S1, const real T1, const real S2, const real T2, const real S3, const real T3, const real S4, const real T4) = 0;
  138.     virtual void RiTorusV(const real MajorRadius, const real MinorRadius, const real PhiMin, const real PhiMax, const real ThetaMax, const parameter_list& Parameters = parameter_list()) = 0;
  139.     virtual void RiTransform(const matrix& Transform) = 0;
  140.     virtual void RiTransformBegin() = 0;
  141.     virtual void RiTransformEnd() = 0;
  142.     virtual void RiTranslate(const real DX, const real DY, const real DZ) = 0;
  143.     virtual void RiTrimCurve(const unsigned_integers& CurveCounts, const unsigned_integers& Orders, const reals& Knots, const reals& Minimums, const reals& Maximums, const unsigned_integers& PointCounts, const reals& U, const reals& V, const reals& W) = 0;
  144.     virtual void RiWorldBegin() = 0;
  145.     virtual void RiWorldEnd() = 0;
  146.  
  147.     // New Aqsis-specific calls introduced to support layered shaders
  148.     //
  149.     /** \todo Come up with a better way to handle non-standard calls */
  150.     virtual void RiShaderLayerV(const std::string& type, const path& Path, const std::string& name, const std::string& layername, const parameter_list& Parameters = parameter_list()) = 0;
  151.     /** \todo Come up with a better way to handle non-standard calls */
  152.     virtual void RiConnectShaderLayers(const std::string& type, const std::string& layer1, const std::string& variable1, const std::string& layer2, const std::string& variable2) = 0;
  153.  
  154.  
  155. protected:
  156.     istream() {}
  157.     istream(const istream& ) {}
  158.     istream& operator=(const istream& ) { return *this; }
  159.     virtual ~istream() {}
  160. };
  161.  
  162. /// Provide definitions for the "standard" RenderMan tokens
  163. inline const std::string RI_A() { return "a"; }
  164. inline const std::string RI_ABORT() { return "abort"; }
  165. inline const std::string RI_AMBIENTLIGHT() { return "ambientlight"; }
  166. inline const std::string RI_AMPLITUDE() { return "amplitude"; }
  167. inline const std::string RI_AZ() { return "az"; }
  168. inline const std::string RI_BACKGROUND() { return "background"; }
  169. inline const std::string RI_BEAMDISTRIBUTION() { return "beamdistribution"; }
  170. inline const std::string RI_BICUBIC() { return "bicubic"; }
  171. inline const std::string RI_BILINEAR() { return "bilinear"; }
  172. inline const std::string RI_BLACK() { return "black"; }
  173. inline const std::string RI_BOX() { return "box"; }
  174. inline const std::string RI_BUMPY() { return "bumpy"; }
  175. inline const std::string RI_CAMERA() { return "camera"; }
  176. inline const std::string RI_CATMULL_ROM() { return "catmull-rom"; }
  177. inline const std::string RI_CLAMP() { return "clamp"; }
  178. inline const std::string RI_COMMENT() { return "comment"; }
  179. inline const std::string RI_CONEANGLE() { return "coneangle"; }
  180. inline const std::string RI_CONEDELTAANGLE() { return "conedeltaangle"; }
  181. inline const std::string RI_CONSTANT() { return "constant"; }
  182. inline const std::string RI_CONSTANTWIDTH() { return "constantwidth"; }
  183. inline const std::string RI_CS() { return "Cs"; }
  184. inline const std::string RI_CUBIC() { return "cubic"; }
  185. inline const std::string RI_DEPTHCUE() { return "depthcue"; }
  186. inline const std::string RI_DIFFERENCE() { return "difference"; }
  187. inline const std::string RI_DISTANCE() { return "distance"; }
  188. inline const std::string RI_DISTANTLIGHT() { return "distantlight"; }
  189. inline const std::string RI_FILE() { return "file"; }
  190. inline const std::string RI_FLATNESS() { return "flatness"; }
  191. inline const std::string RI_FOG() { return "fog"; }
  192. inline const std::string RI_FOV() { return "fov"; }
  193. inline const std::string RI_FRAMEBUFFER() { return "framebuffer"; }
  194. inline const std::string RI_FROM() { return "from"; }
  195. inline const std::string RI_GAUSSIAN() { return "gaussian"; }
  196. inline const std::string RI_HANDLER() { return "handler"; }
  197. inline const std::string RI_HIDDEN() { return "hidden"; }
  198. inline const std::string RI_IDENTIFIER() { return "identifier"; }
  199. inline const std::string RI_IGNORE() { return "ignore"; }
  200. inline const std::string RI_INSIDE() { return "inside"; }
  201. inline const std::string RI_INTENSITY() { return "intensity"; }
  202. inline const std::string RI_INTERSECTION() { return "intersection"; }
  203. inline const std::string RI_KA() { return "Ka"; }
  204. inline const std::string RI_KD() { return "Kd"; }
  205. inline const std::string RI_KR() { return "Kr"; }
  206. inline const std::string RI_KS() { return "Ks"; }
  207. inline const std::string RI_LH() { return "lh"; }
  208. inline const std::string RI_LIGHTCOLOR() { return "lightcolor"; }
  209. inline const std::string RI_LINEAR() { return "linear"; }
  210. inline const std::string RI_MATTE() { return "matte"; }
  211. inline const std::string RI_MAXDISTANCE() { return "maxdistance"; }
  212. inline const std::string RI_METAL() { return "metal"; }
  213. inline const std::string RI_MINDISTANCE() { return "mindistance"; }
  214. inline const std::string RI_N() { return "N"; }
  215. inline const std::string RI_NAME() { return "name"; }
  216. inline const std::string RI_NONPERIODIC() { return "nonperiodic"; }
  217. inline const std::string RI_NP() { return "Np"; }
  218. inline const std::string RI_OBJECT() { return "object"; }
  219. inline const std::string RI_ORIGIN() { return "origin"; }
  220. inline const std::string RI_ORTHOGRAPHIC() { return "orthographic"; }
  221. inline const std::string RI_OS() { return "Os"; }
  222. inline const std::string RI_OUTSIDE() { return "outside"; }
  223. inline const std::string RI_P() { return "P"; }
  224. inline const std::string RI_PAINT() { return "paint"; }
  225. inline const std::string RI_PAINTEDPLASTIC() { return "paintedplastic"; }
  226. inline const std::string RI_PERIODIC() { return "periodic"; }
  227. inline const std::string RI_PERSPECTIVE() { return "perspective"; }
  228. inline const std::string RI_PLASTIC() { return "plastic"; }
  229. inline const std::string RI_POINTLIGHT() { return "pointlight"; }
  230. inline const std::string RI_PRIMITIVE() { return "primitive"; }
  231. inline const std::string RI_PRINT() { return "print"; }
  232. inline const std::string RI_PW() { return "Pw"; }
  233. inline const std::string RI_PZ() { return "Pz"; }
  234. inline const std::string RI_RASTER() { return "raster"; }
  235. inline const std::string RI_RGB() { return "rgb"; }
  236. inline const std::string RI_RGBA() { return "rgba"; }
  237. inline const std::string RI_RGBAZ() { return "rgbaz"; }
  238. inline const std::string RI_RGBZ() { return "rgbz"; }
  239. inline const std::string RI_RH() { return "rh"; }
  240. inline const std::string RI_ROUGHNESS() { return "roughness"; }
  241. inline const std::string RI_S() { return "s"; }
  242. inline const std::string RI_SCREEN() { return "screen"; }
  243. inline const std::string RI_SHINYMETAL() { return "shinymetal"; }
  244. inline const std::string RI_SINC() { return "sinc"; }
  245. inline const std::string RI_SMOOTH() { return "smooth"; }
  246. inline const std::string RI_SPECULARCOLOR() { return "specularcolor"; }
  247. inline const std::string RI_SPOTLIGHT() { return "spotlight"; }
  248. inline const std::string RI_ST() { return "st"; }
  249. inline const std::string RI_STRUCTURE() { return "structure"; }
  250. inline const std::string RI_T() { return "t"; }
  251. inline const std::string RI_TEXTURENAME() { return "texturename"; }
  252. inline const std::string RI_TO() { return "to"; }
  253. inline const std::string RI_TRIANGLE() { return "triangle"; }
  254. inline const std::string RI_UNION() { return "union"; }
  255. inline const std::string RI_WIDTH() { return "width"; }
  256. inline const std::string RI_WORLD() { return "world"; }
  257. inline const std::string RI_Z() { return "z"; }
  258.  
  259. } // namespace ri
  260.  
  261. } // namespace k3d
  262.  
  263. #endif // !K3DSDK_ISTREAM_RI_H
  264.  
  265.