Loading files
3d097a032This file is pinned to the selected release. Download the original to open it in your design tool.
// Created on: 1995-03-17
// Created by: Mister rmi
// Copyright (c) 1995-1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _Aspect_CircularGrid_HeaderFile
#define _Aspect_CircularGrid_HeaderFile
#include <Standard_Integer.hxx>
#include <Aspect_Grid.hxx>
class Aspect_CircularGrid : public Aspect_Grid
{
DEFINE_STANDARD_RTTIEXT(Aspect_CircularGrid, Aspect_Grid)
public:
//! creates a new grid. By default this grid is not
//! active.
Standard_EXPORT Aspect_CircularGrid(const double aRadiusStep,
const int aDivisionNumber,
const double XOrigin = 0,
const double anYOrigin = 0,
const double aRotationAngle = 0);
//! defines the x step of the grid.
Standard_EXPORT void SetRadiusStep(const double aStep);
//! defines the step of the grid.
Standard_EXPORT void SetDivisionNumber(const int aNumber);
Standard_EXPORT void SetGridValues(const double XOrigin,
const double YOrigin,
const double RadiusStep,
const int DivisionNumber,
const double RotationAngle);
//! returns the point of the grid the closest to the point X,Y
Standard_EXPORT void Compute(const double X,
const double Y,
double& gridX,
double& gridY) const override;
//! returns the x step of the grid.
Standard_EXPORT double RadiusStep() const;
//! returns the x step of the grid.
Standard_EXPORT int DivisionNumber() const;
//! Set the circular grid radius (plane-local units). 0.0 (default) means
//! unbounded - the shader draws the grid to the horizon.
Standard_EXPORT void SetRadius(const double theRadius);
//! Return the bounded radius. 0.0 means unbounded.
double Radius() const { return myRadius; }
//! Set signed offset along the plane normal for display only; snap math
//! stays on the plane. Use a small negative value to avoid z-fighting with
//! coplanar geometry.
Standard_EXPORT void SetZOffset(const double theOffset);
//! Return the display-time Z-offset along the plane normal.
double ZOffset() const { return myZOffset; }
//! Restrict the grid to an angular wedge, walking counter-clockwise from
//! @p theStart to @p theEnd (radians, measured from the rotated plane X
//! axis). Setting both values equal (e.g. both 0.0) returns to full-circle
//! rendering - the sentinel used for unbounded.
Standard_EXPORT void SetArcRange(const double theStart, const double theEnd);
//! Return the arc start angle (radians). Meaningful only when IsArc() is true.
double AngleStart() const { return myAngleStart; }
//! Return the arc end angle (radians). Meaningful only when IsArc() is true.
double AngleEnd() const { return myAngleEnd; }
//! Return TRUE when the grid is restricted to an angular wedge.
bool IsArc() const { return myAngleStart != myAngleEnd; }
Standard_EXPORT void Init() override;
//! Dumps the content of me into the stream
Standard_EXPORT void DumpJson(Standard_OStream& theOStream, int theDepth = -1) const override;
private:
double myRadiusStep;
int myDivisionNumber;
double myAlpha;
double myA1;
double myB1;
double myRadius;
double myZOffset;
double myAngleStart;
double myAngleEnd;
};
#endif // _Aspect_CircularGrid_HeaderFile