CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GiProceduralGenerator.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24// Procedural textures generator.
25
26#ifndef __ODGIPROCEDURALGENERATOR_H__
27#define __ODGIPROCEDURALGENERATOR_H__
28
29#include "RootExport.h"
30#include "GiExport.h"
31#include "UInt32Array.h"
32#include "GiImage.h"
33#include "GiMaterial.h"
34
35#include "RxObject.h"
36
37#include "TD_PackPush.h"
38
44class ODGI_EXPORT OdGiProceduralGeneratorPE : public OdRxObject
45{
46 public:
48
53
64 OdGiImageBGRA32 &image, double renderCoef = 1.0) = 0;
65};
66
73
83{
84 public:
99
109 protected:
112 public:
117
123
128
144 void copyGradient(const OdUInt32Array &other);
150 void copyGradient(const ODCOLORREF *colors, OdUInt32 nColors);
216 void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, ODCOLORREF color4, ODCOLORREF color5, OdUInt32 nColors,
231 void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, ODCOLORREF color4, ODCOLORREF color5, OdUInt32 nColors,
234
241 void fillInterval(ODCOLORREF color, double from = 0.0, double to = 1.0);
257 void generateInterval(ODCOLORREF color1, ODCOLORREF color2, double from = 0.0, double to = 1.0,
269
289 ODCOLORREF colorAt(double at) const;
295 bool isInitialized() const;
301 const OdUInt32Array &asArray() const;
302
314
329
336 const OdGiGradientGenerator &operator =(const OdGiGradientGenerator &other);
337
346
352
357 void operator +=(const OdGiGradientGenerator &other);
359 protected:
367 OdUInt32 clampToRange(double inVal) const;
371 double toDoubleRange(OdUInt32 inVal) const;
372
376 static double linterp(double a, double b, double t);
380 static double einterp(double a, double b, double t);
384 static double cinterp(double a, double b, double t);
388 static double ieinterp(double a, double b, double t);
389};
390
399class ODGI_EXPORT OdGiProceduralGenerator : public OdRxObject
400{
401 public:
403
404 // High-level functions
405
417 OdGiImageBGRA32 &image, double renderCoef = 1.0) = 0;
418
430 virtual void generateProceduralWood(OdGiPixelBGRA32 color1, OdGiPixelBGRA32 color2, double radialNoise, double axialNoise, double grainThickness,
431 OdGiImageBGRA32 &image, double renderCoef = 1.0) = 0;
441 virtual void generateProceduralMarble(OdGiPixelBGRA32 stoneColor, OdGiPixelBGRA32 veinColor, double veinSpacing, double veinWidth,
442 OdGiImageBGRA32 &image, double renderCoef = 1.0) = 0;
443
444 // Low-level functions
445
454 virtual void setColorGradient(const OdGiGradientGenerator &gradient) = 0;
460 virtual const OdGiGradientGenerator &colorGradient() const = 0;
461};
462
469
470#include "TD_PackPop.h"
471
472#endif // __ODGIPROCEDURALGENERATOR_H__
@ color1
Definition FxUIEnum.h:78
#define ODGI_EXPORT
Definition GiExport.h:35
OdSmartPtr< OdGiProceduralTexture > OdGiProceduralTexturePtr
OdSmartPtr< OdGiProceduralGeneratorPE > OdGiProceduralGeneratorPEPtr
OdSmartPtr< OdGiProceduralGenerator > OdGiProceduralGeneratorPtr
#define ODCOLORREF
unsigned int OdUInt32
unsigned char OdUInt8
OdTrVisMiniVec4d< DataType > operator+(const OdTrVisMiniVec4d< DataType > &v1, const OdTrVisMiniVec4d< DataType > &v2)
OdArray< OdUInt32, OdMemoryAllocator< OdUInt32 > > OdUInt32Array
Definition UInt32Array.h:35
void createGradient(ODCOLORREF color1, ODCOLORREF color2, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation)
OdUInt32 colorsCount() const
void fillInterval(ODCOLORREF color, double from=0.0, double to=1.0)
double toDoubleRange(OdUInt32 inVal) const
void createColorArrayFilled(ODCOLORREF color, OdUInt32 nColors)
static double cinterp(double a, double b, double t)
void generateInterval(ODCOLORREF color1, ODCOLORREF color2, OdUInt32 from, OdUInt32 to, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation)
void copyGradient(const ODCOLORREF *colors, OdUInt32 nColors)
void createColorArray(OdUInt32 nColors)
static double linterp(double a, double b, double t)
void copyGradient(const OdUInt32Array &other)
ODCOLORREF colorAt(double at) const
OdGiGradientGenerator::AddressMode addressMode() const
void generateInterval(ODCOLORREF color1, ODCOLORREF color2, double from=0.0, double to=1.0, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation)
static OdGiGradientGenerator createSpectrumGradient(OdUInt32 nColors, OdUInt8 alpha=0)
void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, ODCOLORREF color4, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation)
static double einterp(double a, double b, double t)
void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl1, OdGiGradientGenerator::InterpolationType ipl2)
const OdUInt32Array & asArray() const
bool isInitialized() const
void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, ODCOLORREF color4, ODCOLORREF color5, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation)
void appendGradient(const OdGiGradientGenerator &other)
OdUInt32 clampToRange(OdUInt32 inVal) const
ODCOLORREF colorAt(OdUInt32 nColor) const
void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation)
static ODCOLORREF interpolateColor(ODCOLORREF color1, ODCOLORREF color2, double at, OdGiGradientGenerator::InterpolationType ipl=OdGiGradientGenerator::kLinearInterpolation, OdGiGradientGenerator::AddressMode mode=OdGiGradientGenerator::kWrapMode)
void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, ODCOLORREF color4, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl1, OdGiGradientGenerator::InterpolationType ipl2, OdGiGradientGenerator::InterpolationType ipl3)
void createGradient(ODCOLORREF color1, ODCOLORREF color2, ODCOLORREF color3, ODCOLORREF color4, ODCOLORREF color5, OdUInt32 nColors, OdGiGradientGenerator::InterpolationType ipl1, OdGiGradientGenerator::InterpolationType ipl2, OdGiGradientGenerator::InterpolationType ipl3, OdGiGradientGenerator::InterpolationType ipl4)
static double ieinterp(double a, double b, double t)
OdGiGradientGenerator(const OdGiGradientGenerator &other)
void setAddressMode(OdGiGradientGenerator::AddressMode mode)
OdUInt32 clampToRange(double inVal) const
void fillInterval(ODCOLORREF color, OdUInt32 from, OdUInt32 to)
virtual void setColorGradient(const OdGiGradientGenerator &gradient)=0
virtual const OdGiGradientGenerator & colorGradient() const =0
virtual void generateProceduralWood(OdGiPixelBGRA32 color1, OdGiPixelBGRA32 color2, double radialNoise, double axialNoise, double grainThickness, OdGiImageBGRA32 &image, double renderCoef=1.0)=0
ODRX_DECLARE_MEMBERS(OdGiProceduralGenerator)
virtual void generateProceduralMarble(OdGiPixelBGRA32 stoneColor, OdGiPixelBGRA32 veinColor, double veinSpacing, double veinWidth, OdGiImageBGRA32 &image, double renderCoef=1.0)=0
virtual bool generateProceduralTexture(OdGiProceduralTexturePtr pTexture, OdGiImageBGRA32 &image, double renderCoef=1.0)=0
ODRX_DECLARE_MEMBERS(OdGiProceduralGeneratorPE)
virtual bool generateProceduralTexture(OdGiProceduralTexturePtr pTexture, OdGiImageBGRA32 &image, double renderCoef=1.0)=0
GLfloat GLfloat GLfloat alpha
Definition gles2_ext.h:147