//////////////////////////////////////
// START of File: CE2_PIE.HPP
//////////////////////////////////////

#ifndef CE2_PIE_HPP
#define CE2_PIE_HPP

//===================================================================
//
// COPYRIGHT NOTICE:  This code is protected by Copyright!
//
// Copyright (c) 1994 through 1997 by DPC Technology Corporation.
// All rights reserved by DPC Technology Corporation. 
//
// See files "cf_copyr.txt" and "cf_licen.txt" for details of 
// copyright and license specifications, and contact information.
//
//===================================================================

// Master Header File Listing:
// Usage:   #include    <cf_api/ce2_pie.hpp>
            // 2D Pie Chart Engine object derived from cf_eng_Polar.
   
// Include Chart Framework class or ID defs/headers this file needs.
class       cf_2DRect;
#include    <cf_api/c0_dimen.hpp>
            // 2D-Rects define projected ellipses

class       bf_Display;
#include    <cf_api/b0_dspla.hpp>

class       cf_ChartModel;
class       cf_eng_Polar;
#include    <cf_api/ce1_pcor.hpp>

//--------------------------------------------------
// Class cf_eng_Pie2D models a 2D Polar Coordinate 
// Pie Chart in a 3D Space.
//--------------------------------------------------
class CF_EXPORT   cf_eng_Pie2D : public cf_eng_Polar
{

public:

    cf_eng_Pie2D();

    virtual         ~cf_eng_Pie2D();

    virtual void    applyDataUpdate( cf_ChartModel  *p_cf_cmodlDataSource );

    virtual void    applyGeomXform();

    virtual void    applyProjXform();

    virtual void    config3DBoxETC();
                            
    virtual void    draw2D( bf_Display *p_bf_dspFromChartView );

    virtual void    draw3D( bf_Display *p_bf_dspFromChartView );

    virtual void    renderAttribs(  BOOL  bReRenderRadialEdges = FALSE,
                                    BOOL  bReRenderCircumference = FALSE);
                    // SOME platforms (notably OS/2) do not render 
                    // pie slice well AT ALL -- so final radial edge
                    // and/or curcumference arc render-ops REALLY 
                    // help!  Note that this member method is intended
                    // to CORRECT OS-specific problems, and thus
                    // is NOT the normal mode of operation of this
                    // chart-engine.  Note that this member method
                    // MAY be eliminated, re-implemented and/or 
                    // re-named in future revisions!

protected:

    virtual void    drawSlice(  cf_2DRect  cf_2drEllipseRectangle,
                                int         iStartAtIndex,
                                int         iFinishAtIndex,
                                bf_Display *p_bf_dspFromChartView );

    BOOL    bRenderRadialEdges;         // C-tor inits to FALSE.
    BOOL    bRenderCircumference;       // C-tor inits to FALSE.
            // Used to flag the drawSlice member method above to
            // invoke special (typically OS-specific, e.g. OS/2) 
            // rendering operations used to correct pie slice 
            // rendering problems.
    
};  // End of cf_eng_Pie2D declaration.

#endif

//////////////////////////////////////
// END of File: CE2_PIE.HPP
//////////////////////////////////////


            
