Blob Blame Raw
#pragma once

//-----------------------------------------------------------------------------
//  drawutil.h:
//    Private header to common fuction in drawcurves.cpp and drawregions.cpp
//-----------------------------------------------------------------------------

#ifndef DRAWUTIL_H
#define DRAWUTIL_H

#include "tgl.h"
//#include "traster.h"
//#include "tcurves.h"
//#include "tregion.h"

class TRegion;

#undef DVAPI
#undef DVVAR
#ifdef TVECTORIMAGE_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif

//=============================================================================

//! structure with information about texture to create
struct TextureInfoForGL {
	//  GLenum target,
	//  GLint level,
	GLint internalformat;
	GLsizei width;
	GLsizei height;
	// GLint border,
	GLenum format;
	GLenum type;
	const GLvoid *pixels;
};

//=============================================================================

/**
 *
 */
DVAPI TRasterP prepareTexture(const TRasterP &ras,
							  TextureInfoForGL &texinfo);

/**
 *
 */
DVAPI double computeStep(const TStroke &s,
						 double pixelSize);

/**
 *  Draw stroke centerline between parameters from and to.
 */
DVAPI void drawStrokeCenterline(const TStroke &stroke,
								double pixelSize,
								double from = 0.0,
								double to = 1.0);

DVAPI void stroke2polyline(std::vector<TPointD> &pnts,
						   const TStroke &stroke,
						   double pixelSize,
						   double w0 = 0.0,
						   double w1 = 1.0,
						   bool lastRepeatable = false);

DVAPI void region2polyline(std::vector<T3DPointD> &pnts,
						   const TRegion *region,
						   double pixeSize);

DVAPI TStroke *makeEllipticStroke(double thick,
								  TPointD center,
								  double radiusX,
								  double radiusY);

#endif // DRAWUTIL_H
//-----------------------------------------------------------------------------
//  End Of File
//-----------------------------------------------------------------------------