<HTML>
<HEAD>
<TITLE>Source</TITLE></HEAD><BODY><H6><A href=main.html>Contents page</A></H6><P>
<H6><A href=Main.html>Index</A></H6><P>
<H1>Source</H1>
<HR>
  //////////////////////////////////////////////////////////////////////////////<PRE>
  // status.cpp
  //
  // Jeffry A Worth
  // November 10, 1995
  //////////////////////////////////////////////////////////////////////////////<P>

  //////////////////////////////////////////////////////////////////////////////
  // INCLUDES
  #include &quot;aframe:include/status.hpp&quot;
  #include &quot;aframe:include/rastport.hpp&quot;<P>

  //////////////////////////////////////////////////////////////////////////////
  //<P>

  AFStatus::AFStatus()
  {
    m_text=NULL;
    m_percent=0;
  }<P>

  AFStatus::~AFStatus()
  {
    DestroyObject();
  }<P>

  void AFStatus::DestroyObject()
  {
    AFGadget::DestroyObject();
    if(m_text) {
      delete m_text;
      m_text=NULL;
    }
  }<P>

  void AFStatus::Create(AFWindow* pwindow, AFRect *rect, ULONG id, UBYTE penDone, UBYTE penToGo)
  {
    AFRastPort rp(pwindow);
    char string[10];<P>

    // Create the gadget
    AFGadget::Create(pwindow,rect,id);<P>

    // Create string for the text
    sprintf(string,&quot;%d%%&quot;,m_percent);
    m_text = new char[strlen(string)+1];
    strcpy(m_text,string);<P>

    // Set Pens
    m_penDone = penDone;
    m_penToGo = penToGo;<P>

    // Build Images
    m_Done.NextImage=&amp;m_ToGo;
    m_ToGo.NextImage=NULL;
    BuildImages(); <P>

    // Fill IntuiText Structure
    m_IntuiText.FrontPen = 1;
    m_IntuiText.DrawMode = JAM1;
    m_IntuiText.LeftEdge = 5;
    m_IntuiText.TopEdge = 5;
    m_IntuiText.ITextFont = NULL;
    m_IntuiText.LeftEdge = (m_pgadget-&gt;Width-rp.TextLength(m_text,strlen(m_text)))/2;
    m_IntuiText.IText = (UBYTE*)m_text;
    m_IntuiText.NextText = NULL;<P>

    // Attach IntuiText Struct and Border Struct to gadget Struct
    m_pgadget-&gt;GadgetText = &amp;m_IntuiText;
    m_pgadget-&gt;GadgetRender = &amp;m_Done;
    m_pgadget-&gt;Flags = GFLG_GADGIMAGE|GFLG_GADGHNONE;
  }<P>

  void AFStatus::BuildImages()
  {
    // Fill Done Image Struct
    m_Done.LeftEdge = m_Done.TopEdge = 0;
    m_Done.Width=m_percent*m_pgadget-&gt;Width/100;
    m_Done.Height=m_pgadget-&gt;Height;
    m_Done.Depth=4;
    m_Done.ImageData=NULL;
    m_Done.PlanePick=NULL;
    m_Done.PlaneOnOff=m_penDone;<P>

    // Fill ToGo Image Struct
    m_ToGo.TopEdge = 0;
    m_ToGo.LeftEdge=m_percent*m_pgadget-&gt;Width/100;
    m_ToGo.Width=m_pgadget-&gt;Width-m_ToGo.LeftEdge;
    m_ToGo.Height=m_pgadget-&gt;Height;
    m_ToGo.Depth=4;
    m_ToGo.ImageData=NULL;
    m_ToGo.PlanePick=NULL;
    m_ToGo.PlaneOnOff=m_penToGo;
  }<P>

  void AFStatus::SetStatus(int percent)
  {
    AFRastPort rp(m_pwindow);
    char string[10];
  
    // Rebuild Images
    m_percent=percent;
    BuildImages();<P>

    // Build Text String
    m_IntuiText.IText = NULL;
    if(m_text) delete m_text;
    sprintf(string,&quot;%d%%&quot;,m_percent);
    m_text = new char[strlen(string)+1];
    strcpy(m_text,string);
    m_IntuiText.LeftEdge = (m_pgadget-&gt;Width-rp.TextLength(m_text,strlen(m_text)))/2;
    m_IntuiText.IText = (UBYTE*)m_text;<P>

    // Update the gadget
    RefreshGList(m_pgadget,m_pwindow-&gt;m_pWindow,NULL,1);
  }
<HR>
