40 m[0] = m[5] = m[10] = m[15] = 1;
41 m[1] = m[2] = m[3] = m[4] = 0;
42 m[6] = m[7] = m[8] = m[9] = 0;
43 m[11] = m[12] = m[13] = m[14] = 0;
162 (
float)d.
m[0], (
float)d.
m[4], (
float)d.
m[8], (
float)d.
m[12],
163 (
float)d.
m[1], (
float)d.
m[5], (
float)d.
m[9], (
float)d.
m[13],
164 (
float)d.
m[2], (
float)d.
m[6], (
float)d.
m[10], (
float)d.
m[14],
165 (
float)d.
m[3], (
float)d.
m[7], (
float)d.
m[11], (
float)d.
m[15]);
190 d.
m[0] = s1.
m[0] * s2.
m[0] + s1.
m[4] * s2.
m[1] + s1.
m[8] * s2.
m[2] + s1.
m[12] * s2.
m[3];
191 d.
m[1] = s1.
m[1] * s2.
m[0] + s1.
m[5] * s2.
m[1] + s1.
m[9] * s2.
m[2] + s1.
m[13] * s2.
m[3];
192 d.
m[2] = s1.
m[2] * s2.
m[0] + s1.
m[6] * s2.
m[1] + s1.
m[10] * s2.
m[2] + s1.
m[14] * s2.
m[3];
193 d.
m[3] = s1.
m[3] * s2.
m[0] + s1.
m[7] * s2.
m[1] + s1.
m[11] * s2.
m[2] + s1.
m[15] * s2.
m[3];
195 d.
m[4] = s1.
m[0] * s2.
m[4] + s1.
m[4] * s2.
m[5] + s1.
m[8] * s2.
m[6] + s1.
m[12] * s2.
m[7];
196 d.
m[5] = s1.
m[1] * s2.
m[4] + s1.
m[5] * s2.
m[5] + s1.
m[9] * s2.
m[6] + s1.
m[13] * s2.
m[7];
197 d.
m[6] = s1.
m[2] * s2.
m[4] + s1.
m[6] * s2.
m[5] + s1.
m[10] * s2.
m[6] + s1.
m[14] * s2.
m[7];
198 d.
m[7] = s1.
m[3] * s2.
m[4] + s1.
m[7] * s2.
m[5] + s1.
m[11] * s2.
m[6] + s1.
m[15] * s2.
m[7];
200 d.
m[8] = s1.
m[0] * s2.
m[8] + s1.
m[4] * s2.
m[9] + s1.
m[8] * s2.
m[10] + s1.
m[12] * s2.
m[11];
201 d.
m[9] = s1.
m[1] * s2.
m[8] + s1.
m[5] * s2.
m[9] + s1.
m[9] * s2.
m[10] + s1.
m[13] * s2.
m[11];
202 d.
m[10] = s1.
m[2] * s2.
m[8] + s1.
m[6] * s2.
m[9] + s1.
m[10] * s2.
m[10] + s1.
m[14] * s2.
m[11];
203 d.
m[11] = s1.
m[3] * s2.
m[8] + s1.
m[7] * s2.
m[9] + s1.
m[11] * s2.
m[10] + s1.
m[15] * s2.
m[11];
205 d.
m[12] = s1.
m[0] * s2.
m[12] + s1.
m[4] * s2.
m[13] + s1.
m[8] * s2.
m[14] + s1.
m[12] * s2.
m[15];
206 d.
m[13] = s1.
m[1] * s2.
m[12] + s1.
m[5] * s2.
m[13] + s1.
m[9] * s2.
m[14] + s1.
m[13] * s2.
m[15];
207 d.
m[14] = s1.
m[2] * s2.
m[12] + s1.
m[6] * s2.
m[13] + s1.
m[10] * s2.
m[14] + s1.
m[14] * s2.
m[15];
208 d.
m[15] = s1.
m[3] * s2.
m[12] + s1.
m[7] * s2.
m[13] + s1.
m[11] * s2.
m[14] + s1.
m[15] * s2.
m[15];
247 double mod = sqrt(x*x + y * y + z * z);
251 double r = angle * 3.141592653589793238463 / 360.0;
252 double c = cos(
r), s = sin(
r);
254 double v[4] = { s*x, s*y, s*z, c };
257 1 - 2 * (v[1] * v[1] + v[2] * v[2]),
258 2 * (v[0] * v[1] + v[2] * v[3]),
259 2 * (v[0] * v[2] - v[1] * v[3]), 0,
261 2 * (v[0] * v[1] - v[2] * v[3]),
262 1 - 2 * (v[2] * v[2] + v[0] * v[0]),
263 2 * (v[1] * v[2] + v[0] * v[3]), 0,
265 2 * (v[2] * v[0] + v[1] * v[3]),
266 2 * (v[1] * v[2] - v[0] * v[3]),
267 1 - 2 * (v[1] * v[1] + v[0] * v[0]), 0,
317 GLdouble bottom, GLdouble top,
318 GLdouble nearVal, GLdouble farVal)
323 m.
m[0] = 2.0 / (right - left);
324 m.
m[5] = 2.0 / (top - bottom);
325 m.
m[10] = -2.0 / (farVal - nearVal);
327 m.
m[12] = -(right + left) / (right - left);
328 m.
m[13] = -(top + bottom) / (top - bottom);
329 m.
m[14] = -(farVal + nearVal) / (farVal - nearVal);
451 LOG_POST(
Error <<
"Attribute stack underflow - no state to pop");
476 LOG_POST(
Error <<
"CRenderVector::Disable() called between Begin() and End()");
485 LOG_POST(
Error <<
"CRenderVector::LineWidth() called between Begin() and End()");
493 LOG_POST(
Error <<
"CRenderVector::PointSize() called between Begin() and End()");
502 LOG_POST(
Error <<
"CRenderVector::ShadeModel() called between Begin() and End()");
509 GLsizei width, GLsizei height)
512 LOG_POST(
Error <<
"CRenderVector::Scissor() called between Begin() and End()");
524 LOG_POST(
Error <<
"CRenderVector::ColorMask() called between Begin() and End()");
533 LOG_POST(
Error <<
"CRenderVector::PolygonMode() called between Begin() and End()");
542 LOG_POST(
Error <<
"CRenderVector::LineStipple() called between Begin() and End()");
551 LOG_POST(
Error <<
"CRenderVector::PolygonStipple() called between Begin() and End()");
560 LOG_POST(
Error <<
"CRenderVector::BlendFunc() called between Begin() and End()");
571 GLenum srcAlpha, GLenum dstAlpha)
574 LOG_POST(
Error <<
"CRenderVector::BlendFuncSeparate() called between Begin() and End()");
583 LOG_POST(
Error <<
"CRenderVector::LineJoinStyle() called between Begin() and End()");
591 LOG_POST(
Error <<
"CRenderVector::LineCapStyle() called between Begin() and End()");
599 LOG_POST(
Error <<
"CRenderVector::PdfShadeStyle() called between Begin() and End()");
CRef< CGlState > m_State
state used by all nodes
GLenum m_CurrentMode
rendering mode from Begin()
GLenum m_MatrixMode
current modelview matrix and matrix mode
virtual void Ortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble farVal)
virtual void LineCapStyle(IGlState::ELineCapStyle c)
Set line cap ending style (pdf only)
virtual TModelUnit GetMaxWidth(const CGlTextureFont *font, int max_num) const
virtual void Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
virtual void Translated(GLdouble x, GLdouble y, GLdouble z)
virtual void Disable(GLenum glstate)
glDisable()
virtual void BlendFunc(GLenum sfactor, GLenum dfactor)
Options to be used when GL_BLEND is enabled.
virtual CMatrix4< float > GetModelViewMatrix() const
virtual void Rotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
virtual TModelUnit TextWidth(const CGlTextureFont *font, const char *text) const
virtual void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
Color{3,4}{f,d}{v} commands are defined above....
virtual void LoadMatrixf(const GLfloat *m)
virtual TModelUnit GetAdvance(const CGlTextureFont *font, char c) const
virtual void PushMatrix()
virtual void PolygonMode(GLenum face, GLenum mode)
Set the polygon rasterization mode.
virtual TModelUnit GetMetric(const CGlTextureFont *font, IGlFont::EMetric metric, const char *text=NULL, int len=-1) const
Get font metrics - metrics differ when the font under opengl has been replaced by a bitmap font for (...
virtual void LineWidth(GLfloat w)
Set line width for drawing: glLineWidth()
virtual void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
virtual TModelUnit GetFontDescender(const CGlTextureFont *font) const
virtual void Translatef(GLfloat x, GLfloat y, GLfloat z)
list< Matrix > m_ModelViewMatrix
static void x_MultMatrix(Matrix &d, const Matrix &s1, const Matrix &s2)
virtual void MatrixMode(GLenum mode)
virtual void LineJoinStyle(IGlState::ELineJoinStyle s)
PDF-specific rendering state.
static void x_FromMatrix(const Matrix &d, GLdouble *res)
static void x_InitMatrixf(Matrix &d, const GLfloat *s)
virtual void PushAttrib(GLbitfield mask)
void x_ApplyTransf(const Matrix &t)
virtual void Enable(GLenum glstate)
virtual void PointSize(GLfloat s)
Set point size for drawing: glPointSize()
vector< pair< GLbitfield, CGlState > > m_PushedState
virtual void PdfShadeStyle(IGlState::EPdfShadeStyle s)
Set (override defualt) shading style for polygons.
list< Matrix > m_ProjectionMatrix
virtual void Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
Set clipping window: glScissor(x,y,width,height)
virtual void TexEnvi(GLenum target, GLenum pname, GLint param)
virtual void Scaled(GLdouble x, GLdouble y, GLdouble z)
virtual void LoadMatrixd(const GLdouble *m)
virtual void ShadeModel(GLenum mode)
Set shade model for default lighting: glShadeModel(GL_FLAT or GL_SMOOTH)
void x_LoadMatrix(const Matrix &m)
virtual void PolygonStipple(GLubyte *mask)
Set polygon stipple pattern: glPolygonStipple(). Deprecated in gl 3.2+.
virtual TModelUnit TextHeight(const CGlTextureFont *font) const
virtual CMatrix4< float > GetProjectionMatrix() const
static void x_InitMatrixd(Matrix &d, const GLdouble *s)
virtual void LineStipple(GLint factor, GLushort pattern)
Set line stipple pattern: glLineStipple(). Deprecated in gl 3.2+.
virtual void LoadIdentity()
virtual void Scalef(GLfloat x, GLfloat y, GLfloat z)
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
void Warning(CExceptionArgs_Base &args)
virtual void MergeStates(CGlState &s, GLbitfield mask)
This is for pushing and popping states - retain state variables not included in the mask (as per glPu...
ELineJoinStyle
Enumerators for non-enumerated state values (e.g. pdf-only state values)
virtual void PointSize(GLfloat s)
Set point size for drawing: glPointSize()
virtual void PdfShadeStyle(EPdfShadeStyle s)
In (our) PDF files there are two kinds of polys, flat ones (move to, line to, fill) which can have an...
virtual void PolygonMode(GLenum face, GLenum mode)
Set the polygon rasterization mode.
virtual bool IsBitmapFont() const
Returns true if the currently loaded font is from a bitmap.
virtual void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
Set the color mask (glColorMask)
virtual void LineStipple(GLint factor, GLushort pattern)
Set line stipple pattern: glLineStipple(). Deprecated in gl 3.2+.
virtual void Enable(GLenum glstate)
glEnable() all options in m_Enabled
virtual void Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
Set clipping window: glScissor(x,y,width,height)
virtual void LineWidth(GLfloat w)
Set line width for drawing: glLineWidth()
virtual TModelUnit GetFontDescender() const
static string GetFontFileForFace(EFontFace face)
Get font file for given face.
virtual void LineCapStyle(ELineCapStyle c)
Set line cap ending style (pdf only)
TModelUnit GetMaxWidth(int max_num) const
returns minimal space sufficient to render any number in [0, max_num].
virtual void Disable(GLenum glstate)
glDisable() all options in m_Disabled
EFontFace GetFontFace() const
virtual TModelUnit GetMetric(EMetric metric, const char *text=NULL, int len=-1) const
virtual TModelUnit TextWidth(const char *text) const
Compute and return font metrics.
virtual TModelUnit TextHeight(void) const
virtual void LineJoinStyle(ELineJoinStyle s)
PDF-specific rendering state.
virtual void ShadeModel(GLenum mode)
Set shade model for default lighting: glShadeModel(GL_FLAT or GL_SMOOTH)
virtual void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
Options for glBlendFuncSeparate, also enabled via Enable(GL_BLEND).
virtual void BlendFunc(GLenum sfactor, GLenum dfactor)
Options to be used when GL_BLEND is enabled.
virtual void PolygonStipple(GLubyte *mask)
Set polygon stipple pattern: glPolygonStipple(). Deprecated in gl 3.2+.
unsigned int GetFontSize() const
TModelUnit GetAdvance(char c) const
TObjectType & GetNCObject(void) const
Get object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static void text(MDB_val *v)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static void s_MakeIdentity(double m[16])