94 const unsigned int N = 10;
95 const char binchar[
N] =
97 char(0x80), char(0x81), char(0x82), char(0x83), char(0x84),
98 char(0x85), char(0x86), char(0x87), char(0x88), char(0x89)
110 _info[
"Author"] =
new CPdfString(
"National Center for Biotechnology Information");
111 _info[
"Creator"] =
new CPdfString(
"NCBI Genome Workbench http://www.ncbi.nlm.nih.gov/tools/gbench/");
112 _info[
"Producer"] =
new CPdfString(
"NCBI PDF Generator");
133 ol[
"Type"] =
new CPdfName(
"Outlines");
147 const string fontname((*font)[
"Name"]->GetValue());
159 (*m_PageDictionary)[
"Resources"] = resources;
230 if (alpha_state !=
"") {
240 LOG_POST(
"Unable to write text - current content object is NULL.");
255 if (alpha_state !=
"") {
265 LOG_POST(
"Unable to write text - current content object is NULL.");
272 vector<CGlVboNode*>& geom_nodes = model.
GetNodes();
275 for (
size_t i=0;
i<geom_nodes.size(); ++
i) {
276 if (geom_nodes[
i]->IsVisible() && !geom_nodes[
i]->IsSkipped(
eRenderPDF) ) {
277 if (geom_nodes[
i]->GetState().ScaleInvarientSet() &&
278 geom_nodes[
i]->GetState().GetScaleInvarient()) {
281 if (geom_nodes[
i]->GetState().GetScaleInvarient()) {
282 geom_nodes[
i]->GetState().ScaleFactor(scale);
289 vector<CGlVboNode*>& temp_geom_nodes = model.
GetTempNodes();
291 for (
size_t i=0;
i<temp_geom_nodes.size(); ++
i) {
292 if (temp_geom_nodes[
i]->IsVisible() && !temp_geom_nodes[
i]->IsSkipped(
eRenderPDF) ) {
293 if (temp_geom_nodes[
i]->GetState().ScaleInvarientSet() &&
294 temp_geom_nodes[
i]->GetState().GetScaleInvarient()) {
297 if (temp_geom_nodes[
i]->GetState().GetScaleInvarient()) {
298 temp_geom_nodes[
i]->GetState().ScaleFactor(scale);
316 GLdouble model_view_matrix[16];
317 GLdouble projection_matrix[16];
319 viewport[0] = GLint(vp.
Left());
320 viewport[1] = GLint(vp.
Bottom());
321 viewport[2] = GLint(vp.
Width());
322 viewport[3] = GLint(vp.
Height());
328 double llx = (double)rect.
X();
329 double lly = (double)rect.
Y();
331 double urx = (double)rect.
Z();
332 double ury = (double)rect.
W();
334 double px,py,px2,py2,dummyz;
337 model_view_matrix, projection_matrix, viewport,
344 model_view_matrix, projection_matrix, viewport,
345 &px2, &py2, &dummyz);
355 popup_dict[
"Type"] =
new CPdfName(
"Annot");
357 popup_dict[
"Subtype"] =
new CPdfName(
"Square");
374 annot_dict[
"Subtype"] =
new CPdfName(
"Popup");
375 annot_dict[
"Type"] =
new CPdfName(
"Annot");
393 GLdouble model_view_matrix[16];
394 GLdouble projection_matrix[16];
396 viewport[0] = GLint(vp.
Left());
397 viewport[1] = GLint(vp.
Bottom());
398 viewport[2] = GLint(vp.
Width());
399 viewport[3] = GLint(vp.
Height());
405 double llx = (double)rect.
X();
406 double lly = (double)rect.
Y();
408 double urx = (double)rect.
Z();
409 double ury = (double)rect.
W();
414 model_view_matrix, projection_matrix, viewport,
421 model_view_matrix, projection_matrix, viewport,
432 popup_dict[
"Type"] =
new CPdfName(
"Annot");
434 popup_dict[
"Subtype"] =
new CPdfName(
"Link");
435 popup_dict[
"H"] =
new CPdfName(
"I");
438 (*d)[
"JS"] =
new CPdfElement(
" (app.alert\\(\"" + txt +
"\", 3, 0, \"" + title +
"\"\\))");
439 (*d)[
"S"] =
new CPdfName(
"JavaScript");
440 (*d)[
"Type"] =
new CPdfName(
"Action");
483 bool has_color =
false;
491 vector<CVect4<unsigned char> > colors_uc;
494 for (
size_t i=0;
i<colors_uc.size(); ++
i)
495 colors.push_back(
CRgbaColor(colors_uc[
i][0], colors_uc[
i][1], colors_uc[
i][2], colors_uc[
i][3]));
499 vector<float> tex_coords;
502 for (
size_t i=0;
i<tex_coords.size(); ++
i) {
521 vector<CVect2<float> > vertices;
522 vector<CRgbaColor>
colors;
526 if (vertices.size() == 0)
530 GLdouble model_view_matrix[16];
531 GLdouble projection_matrix[16];
536 viewport[0] = GLint(vp.
Left());
537 viewport[1] = GLint(vp.
Bottom());
538 viewport[2] = GLint(vp.
Width());
539 viewport[3] = GLint(vp.
Height());
553 content->
SetClipBox(viewport[0], viewport[1], viewport[2], viewport[3]);
572 if (alpha_state !=
"") {
580 for (
size_t i=0;
i<vertices.size();
i+=2) {
587 model_view_matrix, projection_matrix, viewport,
602 content->
Line(v1p, v2p);
621 vector<CVect2<float> > vertices;
622 vector<CRgbaColor>
colors;
626 if (vertices.size() == 0)
630 GLdouble model_view_matrix[16];
631 GLdouble projection_matrix[16];
633 viewport[0] = GLint(vp.
Left());
634 viewport[1] = GLint(vp.
Bottom());
635 viewport[2] = GLint(vp.
Width());
636 viewport[3] = GLint(vp.
Height());
647 content->
SetClipBox(viewport[0], viewport[1], viewport[2], viewport[3]);
688 if (alpha_state !=
"") {
693 for (
size_t i=0;
i<vertices.size();
i+=2) {
694 if (
i+1 >= vertices.size())
704 model_view_matrix, projection_matrix, viewport,
709 model_view_matrix, projection_matrix, viewport,
724 float dist = (v1p-v2p).Length();
726 if (cdist > 0.1f && dist > 5.0f) {
729 float offset = 5.0f/cdist;
730 int num_segments = (
int)ceilf(dist/
offset);
731 float delta_pct = 1.0f/(float)num_segments;
736 for (
int j=0; j<num_segments; ++j) {
742 if (alpha_state != current_alpha_state) {
744 alpha_state = current_alpha_state;
748 content->
Line(seg_start, seg_end);
756 if (alpha_state != current_alpha_state) {
758 alpha_state = current_alpha_state;
762 content->
Line(v1p, v2p);
766 content->
Line(v1p, v2p);
771 for (
size_t i=1;
i<vertices.size();
i++) {
780 model_view_matrix, projection_matrix, viewport,
785 model_view_matrix, projection_matrix, viewport,
793 if (alpha_state != current_alpha_state) {
795 alpha_state = current_alpha_state;
799 content->
Line(v1p, v2p);
803 for (
size_t i=1;
i<vertices.size();
i++) {
812 model_view_matrix, projection_matrix, viewport,
817 model_view_matrix, projection_matrix, viewport,
825 if (alpha_state != current_alpha_state) {
827 alpha_state = current_alpha_state;
831 content->
Line(v1p, v2p);
841 model_view_matrix, projection_matrix, viewport,
846 model_view_matrix, projection_matrix, viewport,
851 content->
Line(v1p, v2p);
862 vector<CVect2<float> > vertices;
863 vector<CRgbaColor>
colors;
867 if (vertices.size() == 0)
871 GLdouble model_view_matrix[16];
872 GLdouble projection_matrix[16];
874 viewport[0] = GLint(vp.
Left());
875 viewport[1] = GLint(vp.
Bottom());
876 viewport[2] = GLint(vp.
Width());
877 viewport[3] = GLint(vp.
Height());
890 content->
SetClipBox(viewport[0], viewport[1], viewport[2], viewport[3]);
909 for (
i=0;
i<vertices.size(); ++
i) {
916 model_view_matrix, projection_matrix, viewport,
918 vertices[
i].Set(
float(px),
float(py));
935 if (alpha_state !=
"") {
942 for (
i=0;
i<vertices.size();
i+=3) {
943 if (
i+2 >= vertices.size())
946 if (has_color && flat_shading) {
953 tp.
AddTri(vertices[
i], vertices[
i+1], vertices[
i+2]);
959 if (perimeter.size() > 2 && fill) {
964 if (alpha_state != current_alpha_state) {
966 alpha_state = current_alpha_state;
970 content->
Poly(perimeter);
973 for (
i=0;
i<vertices.size();
i+=3) {
974 if (
i+2 >= vertices.size())
984 if (alpha_state != current_alpha_state) {
986 alpha_state = current_alpha_state;
991 content->
Tri(v1p, v2p, v3p);
994 content->
Line(v1p, v2p);
995 content->
Line(v2p, v3p);
996 content->
Line(v3p, v1p);
1001 else if (node->
GetDrawMode() == GL_TRIANGLE_STRIP) {
1004 for (
size_t j=2; j<vertices.size(); ++j) {
1006 if (has_color && flat_shading) {
1013 tp.
AddTri(vertices[j], vertices[j-1], vertices[j-2]);
1019 if (perimeter.size() > 2 && fill) {
1024 if (alpha_state != current_alpha_state) {
1026 alpha_state = current_alpha_state;
1030 content->
Poly(perimeter);
1033 for (
size_t j=2; j<vertices.size(); ++j) {
1042 if (alpha_state != current_alpha_state) {
1044 alpha_state = current_alpha_state;
1048 content->
Tri(v1p, v2p, v3p);
1051 content->
Line(v1p, v2p);
1052 content->
Line(v2p, v3p);
1053 content->
Line(v3p, v1p);
1058 else if (node->
GetDrawMode() == GL_TRIANGLE_FAN) {
1061 vector<CVect2<float> > perimeter;
1062 for (
size_t j=1; j<vertices.size(); ++j) {
1063 perimeter.push_back(vertices[j]);
1073 if (alpha_state != current_alpha_state) {
1075 alpha_state = current_alpha_state;
1079 content->
Poly(perimeter);
1082 for (
size_t j=2; j<vertices.size(); ++j) {
1090 if (alpha_state != current_alpha_state) {
1092 alpha_state = current_alpha_state;
1096 content->
Line(v1p, v2p);
1097 content->
Line(v2p, v3p);
1098 content->
Line(v3p, v1p);
1121 vector<CVect2<float> > vertices;
1125 if (vertices.size() < 3)
1134 for (
size_t v=0; v<vertices.size(); ++v) {
1135 minx =
std::min(vertices[v].X(), minx);
1136 miny =
std::min(vertices[v].Y(), miny);
1137 maxx =
std::max(vertices[v].X(), maxx);
1138 maxy =
std::max(vertices[v].Y(), maxy);
1145 int(minx-10.0f),
int(maxx+10.0f),
1146 int(miny-10.0f),
int(maxy+10.0f));
1153 int range_minx,
int range_maxx,
1154 int range_miny,
int range_maxy)
1159 vector<CVect2<float> > vertices;
1160 vector<CRgbaColor>
colors;
1164 if (vertices.size() < 3)
1178 range_miny, range_maxy);
1182 for (
size_t v=0; v+2<vertices.size(); v+=3) {
1188 tris->
Tri(0, vertices[v], c1, vertices[v+1], c2, vertices[v+2], c3);
1191 else if (node->
GetDrawMode() == GL_TRIANGLE_STRIP) {
1197 tris->
Tri(0, vertices[0], c1, vertices[1], c2, vertices[2], c3);
1199 for (
size_t v=3; v<vertices.size(); ++v) {
1203 tris->
Tri(1, vertices[v], c1);
1206 else if (node->
GetDrawMode() == GL_TRIANGLE_FAN) {
1212 tris->
Tri(0, vertices[0], c1, vertices[1], c2, vertices[2], c3);
1214 for (
size_t v=3; v<vertices.size(); ++v) {
1218 tris->
Tri(2, vertices[v], c1);
1247 GLdouble model_view_matrix[16];
1248 GLdouble projection_matrix[16];
1250 viewport[0] = GLint(vp.
Left());
1251 viewport[1] = GLint(vp.
Bottom());
1252 viewport[2] = GLint(vp.
Width());
1253 viewport[3] = GLint(vp.
Height());
1271 mvp(1, 0), mvp(1, 1), mvp(1, 3),
1272 mvp(3, 0), mvp(3, 1), mvp(3, 3));
1275 matvs(0,0) = ((double)viewport[2])/2.0;
1276 matvs(1,1) = ((double)viewport[3])/2.0;
1278 matvt(0,2) = matvs(0,0) + double(viewport[0]);
1279 matvt(1,2) = matvs(1,1) + double(viewport[1]);
1281 mat = matvt*matvs*mvp33;
1291 shade_obj->
SetClipBox(viewport[0], viewport[1], viewport[2], viewport[3]);
1295 if (alpha_state !=
"")
1297 (*shade_obj) <<
"/" << shader_id <<
" sh" <<
'\n';
1337 vector<CVect2<float> > vertices;
1338 vector<CRgbaColor>
colors;
1342 if (vertices.size() == 0)
1346 GLdouble model_view_matrix[16];
1347 GLdouble projection_matrix[16];
1349 viewport[0] = GLint(vp.
Left());
1350 viewport[1] = GLint(vp.
Bottom());
1351 viewport[2] = GLint(vp.
Width());
1352 viewport[3] = GLint(vp.
Height());
1365 for (
size_t i=3;
i<
colors.size();
i+=4) {
1370 OpenGL state is shaded (only tris may be shaded)");
1384 content->
SetClipBox(viewport[0], viewport[1], viewport[2], viewport[3]);
1407 if (alpha_state !=
"") {
1411 for (
size_t i=3;
i<vertices.size();
i+=4) {
1424 model_view_matrix, projection_matrix, viewport,
1426 v1p.
X() = (float)px;
1427 v1p.
Y() = (float)py;
1429 model_view_matrix, projection_matrix, viewport,
1431 v2p.
X() = (float)px;
1432 v2p.
Y() = (float)py;
1434 model_view_matrix, projection_matrix, viewport,
1436 v3p.
X() = (float)px;
1437 v3p.
Y() = (float)py;
1439 model_view_matrix, projection_matrix, viewport,
1441 v4p.
X() = (float)px;
1442 v4p.
Y() = (float)py;
1449 if (alpha_state != current_alpha_state) {
1451 alpha_state = current_alpha_state;
1456 content->
Quad(v1p, v2p, v3p, v4p);
1459 content->
Line(v1p, v2p);
1460 content->
Line(v2p, v3p);
1461 content->
Line(v3p, v4p);
1462 content->
Line(v4p, v1p);
1487 (*m_Trailer)[
"Size"] =
new CPdfNumber(num_objects);
1499 if (vertex_buf_size == 0)
1520 vector<CRgbaColor>
colors;
1522 alpha =
colors[0].GetAlpha();
1557 int rounded_alpha =
int(alpha*100.0f);
CGlModel2D Base class for a model set up for rendering purposes.
CGlVboNode A rendering node that holds a vertex buffer object.
CIdGenerator - generates consecutive integer identifiers.
string GenShaderID()
Get a new (unique) shader ID of form sh##.
const TObjectList & GetFontObjects(void) const
list< TPdfObjectRef > TObjectList
void PushGraphicsState()
gs
void SetLineDashStyle(int factor, short pattern)
void Tri(CVect2< float > &p1, CVect2< float > &p2, CVect2< float > &p3)
void StartTris(EPdfFilter filter, EBitCount bits_per_coord, int range_minx, int range_maxx, int range_miny, int range_maxy)
void Line(CVect2< float > &p1, CVect2< float > &p2)
CPdfDictionary & GetDictionary(void)
void SetLineCapStyle(int cap_style)
void Text(CRef< CPdfFontHandler > font_handler, EFontFace face, float font_size, CVect2< float > &p, const char *txt)
void SetClipBox(int x, int y, int width, int height)
void SetFillColor(const CRgbaColor &c)
rg
void SetGraphicsState(const string &state)
void SetColor(const CRgbaColor &c)
RG.
void Poly(vector< CVect2< float > > &verts)
void SetLineJoinStyle(int join_style)
void Quad(CVect2< float > &p1, CVect2< float > &p2, CVect2< float > &p3, CVect2< float > &p4)
void SetLineWidth(float w)
unique_ptr< CPdfObjectWriter > m_ObjectWriter
void x_PrintFlatTriBuffer(CGlVboNode *node, const TVPRect &vp, CRgbaGradColorTable *color_table=NULL)
For triangles in which vertices are all the same color.
CRef< CPdfDictionary > PageDictionary()
void AddTooltip(CGlPane &pane, const string &txt, CVect4< float > &rect)
CRef< CPdfTrailer > m_Trailer
vector< TPdfObjectRef > m_PrintInEndDoc
virtual void BeginPage(void)
void RenderShaderInstance(CGlVboNode *node, const string &shader_id, const TVPRect &vp)
Display an instance of a set of shaded triangles "shader_id", which is returned by AddShadedTris.
CRef< CIdGenerator > m_ObjIdGenerator
TPdfObjectRef m_CurrentAnnot
void PrintQuadBuffer(CGlVboNode *node, const TVPRect &vp, CRgbaGradColorTable *color_table=NULL)
Quads are only supported as non-shaded (records error if shaded)
virtual void EndPage(void)
void AddJSTooltip(CGlPane &pane, const string &txt, const string &title, CVect4< float > &rect)
virtual void BeginDocument(void)
void PrintModel(CGlPane &pane, CGlModel2D &model, CRgbaGradColorTable *color_table=NULL)
Print contents of (2D) model.
virtual void SetOptions(const CPrintOptions &options)
CRef< CPdfDictionary > m_PageDictionary
unique_ptr< CPageHandler > m_PageHandler
TPdfObjectRef m_CurrentContent
virtual void SetOutputStream(CNcbiOstream *ostream)
void PrintTriBuffer(CGlVboNode *node, const TVPRect &vp, CRgbaGradColorTable *color_table=NULL)
Prints AddShadedTris and RenderShaderInstance to save an instance of shaded triangles to the pdf.
virtual string x_GetAlphaGraphicsState(CGlVboNode *node)
string AddShadedTris(CGlVboNode *node, const TVPRect &vp, CRgbaGradColorTable *color_table, CPdfObject::EBitCount bit_count=CPdfObject::e16Bit)
Add a triangle buffer to the pdf (but do not display it) Returns the ID of the triangle shader object...
bool x_GetColors(CGlVboNode *node, vector< CRgbaColor > &colors, CRgbaGradColorTable *color_table)
Return true if node has color buffer and update array with those colors.
virtual void EndReference()
CRef< CPdfFontHandler > m_FontHandler
virtual void EndContent()
virtual void EndDocument(void)
void PrintLineBuffer(CGlVboNode *node, const TVPRect &vp, CRgbaGradColorTable *color_table=NULL)
Prints the lines in buffer "node" to the pdf using current graphics state, modelview and projection m...
TPdfObjectRef m_CurrentReference
void PrintText(CRef< CPdfFontHandler > font_handler, EFontFace face, float font_size, CVect2< float > &p, const char *txt, const CRgbaColor &c)
Write a string of text at the specified position (in screen coords).
virtual TPdfObjectRef BeginContent(EContentType t)
void PrintPointBuffer(CGlVboNode *node, const TVPRect &vp, CRgbaGradColorTable *color_table=NULL)
Prints the points in buffer "node" to the pdf using current graphics state, modelview and projection ...
virtual TPdfObjectRef BeginReference()
virtual TPdfObjectRef BeginAnnot()
void WriteObject(TPdfObjectRef &obj)
void PrintBuffer(CGlVboNode *node, const TVPRect &viewport, CRgbaGradColorTable *color_table=NULL)
Checks the buffer type and prints accodingly tris, points or lines.
unsigned int GetNumPages(void) const
TPdfUnit GetUserUnit() const
bool GetGouraudShadingDisabled() const
const string & GetTitle(void) const
bool GetPrintOutput(void) const
class CRgbaColor provides a simple abstraction for managing colors.
CRgbaGradColorTable Provides a storage for colors (to eliminate color creation overhead) and Function...
Simple helper class to take a bunch of triangles and extract from that set, if possible,...
size_t AddTri(CVect2< float > &v1p, CVect2< float > &v2p, CVect2< float > &v3p)
std::vector< CVect2< float > > GetPerimiter() const
returns empty vec if no perimeter can be found.
virtual void SetOutputStream(CNcbiOstream *ostream)
unique_ptr< CPageBuffers > m_PageBuffers
virtual CPrintOptions & GetOptions()
virtual void SetOptions(const CPrintOptions &options)
static const Colors colors
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Warning(CExceptionArgs_Base &args)
const T * GetData() const
GLenum GetShadeModel() const
int gluProjectX(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz)
GLenum GetPolygonMode() const
void Get2DVertexBuffer(std::vector< CVect2< float > > &verts) const
bool GetDefaultColor(CRgbaColor &default_color, bool is_greyscale) const
Return default color from node in default_color.
bool LineWidthSet() const
CRgbaColor GetTexCoordColor(float f) const
Get color given a texture coord.
CVect2< TModelUnit > GetScale() const
virtual CMatrix4< float > GetProjectionMatrix() const =0
void GetColorBuffer(vector< CRgbaColor > &data) const
vector< CGlVboNode * > & GetTempNodes()
GLfloat GetLineWidth() const
bool BlendFuncSet() const
virtual CMatrix4< float > GetModelViewMatrix() const =0
virtual void MatrixMode(GLenum mode)=0
vector< CGlVboNode * > & GetNodes()
void GetColorBufferUC(vector< CVect4< unsigned char > > &data) const
CMatrix4< float > GetTransformedPosition(size_t idx)
return the position with rotation and pixel offset baked in
IRender & GetGl()
convenience function for getting current render manager
TVPRect & GetViewport(void)
vector< CMatrix4< float > > & GetPositions()
return the current set of transformations for thisnode
GLfloat GetPointSize() const
bool LineCapStyleSet() const
bool IsEnabled(GLenum glstate) const
Return true if option is in m_Enabled list for this state.
GLenum GetSourceBlendFactor() const
EPdfShadeStyle GetPdfShadeStyle() const
virtual void PopMatrix()=0
void GetLineStipple(GLint &factor, GLushort &pattern) const
void GetTexCoordBuffer1D(vector< float > &data) const
bool PointSizeSet() const
bool LineJoinStyleSet() const
static bool CheckGlError()
Check if there are any OpenGL errors.
ELineCapStyle GetLineCapStyle() const
size_t GetVertexCount() const
CRgbaColor GetColor() const
GLenum GetTargetBlendFactor() const
EFontFace
Set of pre-defined fonts for which we know we have valid font files.
virtual void LoadMatrixf(const GLfloat *m)=0
IVboGeom::ESecondaryFormat GetSecondaryFormat() const
ELineJoinStyle GetLineJoinStyle() const
GLenum GetDrawMode() const
Return the current drawing mode (e.g.
virtual void PushMatrix()=0
bool LineStippleSet() const
@ kSecondaryFormatColorUChar
@ kSecondaryFormatColorFloat
@ kSecondaryFormatTexture1D
unsigned int NextId(void)
static float ColorDistance(const CRgbaColor &c1, const CRgbaColor &c2)
returns the distance in the RGB color cube between the two colors, scaled to a range [0,...
float GetAlpha(void) const
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
unsigned int
A callback function used to compare two keys in a database.
const struct ncbi::grid::netcache::search::fields::SIZE size
Defines: CTimeFormat - storage class for time format.
Int4 delta(size_t dimension_, const Int4 *score_)
CNcbiOstream & pdfeol(CNcbiOstream &strm)
static const char * catalog