Exemple #1
0
 void SetValue(float v, bool fFlash)
 {
     m_value =
         (int)bound(
             (v - m_minValue) * ((float)XSize()) / (m_maxValue - m_minValue),
             0.0f,
             (float)XSize()
         );
 }
Exemple #2
0
    void Paint(Surface* pSurface)
    {

        if (m_pImageBkgnd)
            pSurface->BitBlt(WinPoint(0, 0), 
                m_pImageBkgnd->GetSurface(),
                WinRect(m_ptImgOrigin.X(), m_ptImgOrigin.Y(),
                    m_ptImgOrigin.X() + XSize(), m_ptImgOrigin.Y() + YSize()));

        // calc num Items to draw
        int iLastVisibleItem = LastVisibleItem();
        int iLastItem = m_vItems.GetCount() - 1;
        if (iLastVisibleItem > iLastItem)
            iLastVisibleItem = iLastItem;

        // draw each Item
        WinRect rectPaint = WinRect(0, 0, m_nItemWidth, YSize());
        WinRect rectItem = rectPaint;
        rectItem.bottom = rectItem.top;
        ZAssert(m_iTopItem >= 0);

        // count the number of slots for the first item which we are not drawing
        int nNumHiddenSlots = 0;
        
        if (m_vItems.GetCount() > 0)
            {
            while (m_iTopItem - nNumHiddenSlots > 0 
                && m_vItems[m_iTopItem - (nNumHiddenSlots + 1)] == m_vItems[m_iTopItem])
                nNumHiddenSlots++;

            for (int iItem = m_iTopItem;
                    iItem <= iLastVisibleItem; 
                    iItem += m_vItems[iItem]->GetItemHeight() - nNumHiddenSlots, nNumHiddenSlots = 0)
                {
                rectItem.top = rectItem.bottom;
                int nLinesLeft = (iLastVisibleItem - iItem) + 1;
                int nLines = m_vItems[iItem]->GetItemHeight() - nNumHiddenSlots;
                rectItem.bottom += m_nItemHeight * (nLines > nLinesLeft ? nLinesLeft : nLines);

                // draw highlight if selected
                bool bItemSel = (m_iSelItem == iItem);
                if (bItemSel && m_pImageBkgndSel)
                    pSurface->BitBlt(rectItem.Min(), 
                        m_pImageBkgndSel->GetSurface(),
                        rectItem);
                // draw item
                m_vItems[iItem]->DrawItem(pSurface, rectItem, bItemSel, nNumHiddenSlots);
                }
            }
    }
Exemple #3
0
void XDomTD::LayeroutCells(DRAWCONTEXT*pDraw,CELLDATA*pData,int span)
{
   CELLDATA data;  
   LAYEROUTDATA margin;
   SpanCol(pData); 
   data.Reset(pData->cur.x,pData->cur.y,XTRUE);
   PreLayerout(pDraw,&data,&margin);
   data.pData=XNULL;
   int cspan=//pDraw->DCOLSPAN;//
	        //span==0?XMAX(FindAttrib(XEAB::COLSPAN,1),1):span;
			span==0?pDraw->DCOLSPAN:span;
   int rspan=pDraw->DROWSPAN;//
             //XMAX(FindAttrib(XEAB::ROWSPAN,1),1);
	//for debug 
   
   XRect rw=pDraw->win;
   
   

  // if(pDraw->SETWIDTH==663)
//	   int a=0;

   XSize sz;
   if(pData->bFinal)
   {
	   
	   int w=pData->fixCols[pData->nCol];
	   for(int i=1;i<cspan;i++)
	   {
		   if(pData->nCol+i>=(int)pData->fixCols.GetSize()) break;
		   w+=pData->fixCols[pData->nCol+i];
	   }
	   InitMargin(pDraw,&data,&margin,m_nPosX,m_nPosY,w,m_nHeight);
	   XPoint pt=data.cur;
	   if(InitSize(pDraw,&data,w,XFALSE))
	   	 m_nFixHeight=data.max.cy-pt.y;
	   //XSize sz;
	   sz=XSize(m_nWidth,m_nHeight);
	   SetMargin(&margin,m_nWidth,m_nHeight,sz);
	   SaveData(&data);
	   //pDraw->win=rt;
	   //m_nFixHeight=m_nHeight;
   }
   else
   {
	   //data.Reset(pData->cur.x,pData->cur.y,XTRUE);
	   
	   int w=0;
	   //if(pData->nCol+cspan<(XINT)pData->setCols.GetSize())
		{
			//w=pData->setCols[pData->nCol];
			for(int i=0;i<cspan;i++)
			{
				if(pData->nCol+i>=(int)pData->setCols.GetSize()) break;
				w+=pData->setCols[pData->nCol+i];
			}
			//int w1=0;
			/*for(int i=0;i<cspan;i++)
			{
				if(pData->nCol+i>=(int)pData->cols[i]
			}*/
		}

	   InitMargin(pDraw,&data,&margin,m_nPosX,m_nPosY,w,m_nHeight);
	   XPoint pt=data.cur;

	   XU8 bFix=InitFixed(pDraw,&data,w);

	   sz=XSize(m_nWidth,m_nHeight);
	   SetMargin(&margin,m_nWidth,m_nHeight,sz);
	   //pDraw->win=rt;
	   //m_nHeight=XMAX(m_nHeight,pDraw->SETHEIGHT);//m_nHeight;//XMAX(m_nHeight,pDraw->SPACE);
	   //w=m_nWidth;
	   if(bFix)
	   {
		    m_nFixWidth=m_nWidth;
			m_nFixHeight=data.max.cy-pt.y;
	   }
	   if(span==0)
	   {
		   int nMin=m_nMin;
		   //if(bFix) m_nFixWidth=data.max.cx-
		   w=m_nFixWidth;
		   for(int i=0;i<cspan;i++)
		   {
			   XU16 id=pData->nCol+i;
			   
			   if(id>=pData->cols.GetSize())
			   {
				   pData->tabs.Add(bFix==1);
				   pData->cols.Add(nMin/(cspan-i));
				   pData->fixCols.Add(w/(cspan-i));
				   nMin-=nMin/(cspan-i);
				   w-=w/(cspan-i);
				   //break;
			   }
			   else if(i+1<cspan)
			   {
				   pData->tabs[id]|=bFix;
				   nMin=XMAX(nMin-pData->cols[id],0);
				   w=XMAX(w-pData->fixCols[id],0);
			   }
			   else
			   {
				   pData->tabs[id]|=bFix;
				   if(pData->cols[id]<nMin)
			   		   pData->cols[id]=nMin;
				   if(pData->fixCols[id]<w)
			   		   pData->fixCols[id]=w;
			   }
		   }
	   }
   }
   //m_rows.DataFrom(data.rowws);
   //m_cols.DataFrom(data.fixCols);
   //XSize size(m_nWidth,m_nHeight);	
   //SetMargin(&margin,m_nWidth,m_nHeight,size);
   /*	XString8 str=FindAttrib(XEAB::ID,"");
	if(str=="999")
		int a=0;*/
   if(pDraw->bCollapse)
   {
	   //m_nWidth-=2;
	   //m_nHeight-=2;
	   //sz.cx-=2;
	   sz.cy-=2;
   } //*///*/

   if(rspan<=1)
		SetTabRow(pDraw,pData,sz.cx,sz.cy);//m_nWidth,m_nHeight);//XSize(m_nWidth,m_nHeight),m_nMin,XTRUE);
   else
   {
	   	SetTabRow(pDraw,pData,sz.cx,pDraw->SPACE);//XSize(m_nWidth,pDraw->nRowSpace),m_nMin,XTRUE);
		pData->spans.Add(rspan);
		pData->spans.Add(pData->nCol);
		pData->spans.Add(m_nWidth);
		pData->spans.Add(m_nFixHeight);
		pData->spans.Add(cspan);
   }
   pDraw->win=rw;
   
   pData->nCol+=cspan;
   EndLayerout(pDraw,&data);
}
void AABB::SetSize(const vec3& p){// this will not move the box, only scale it
	vec3 scalar(p.x/XSize(), p.y/YSize(), p.z/ZSize());
	Max*=scalar;
	Min*=scalar;

}
MouseResult Pane::HitTest(IInputProvider* pprovider, const Point& point, bool bCaptured)
{
    bool bInside = 
           !m_bHidden
        && point.X() >= 0
        && point.X() < (float)XSize() 
        && point.Y() >= 0 
        && point.Y() < (float)YSize();

    if (m_ppaneCapture) {
        ZAssert(bCaptured);

        //
        // Is the mouse over the captured pane?
        //

        MouseResult mouseResult = 
            m_ppaneCapture->HitTest(
                pprovider, 
                point - Point::Cast(m_ppaneCapture->m_offset),
                true
            );

        if (mouseResult.Test(MouseResultHit())) {
            m_ppaneHit = m_ppaneCapture;
        } else {
            m_ppaneHit = NULL;
        }

        //
        // Release Capture?
        //

        if (mouseResult.Test(MouseResultRelease())) {
            RemoveCapture();
            return mouseResult;
        }

        //
        // Call MouseMove
        //

        m_ppaneCapture->MouseMove(
            pprovider,
            point - Point::Cast(m_ppaneCapture->m_offset),
            true,
            m_ppaneHit != NULL
        );
    } else {
        //
        //
        // Which image are we over?
        //

        Pane* ppaneHit  = NULL;

        // !!! if (bInside || m_ppaneHit != NULL) {

        if (bInside) {
            TRef<Pane> ppane;

            for(ppane = m_pchild; ppane!= NULL; ppane = ppane->m_pnext) {
                MouseResult mouseResult =
                    ppane->HitTest(
                        pprovider,
                        point - Point::Cast(ppane->m_offset),
                        false
                    );

                if (mouseResult.Test(MouseResultHit())) {
                    // !!! some of the mdl files violate this
                    // ZAssert(ppaneHit == NULL);
                    if (ppaneHit == NULL) {
                        ppaneHit = ppane;
                    }
                }
            }
        }

        //
        // Call MouseMove, MouseEnter, or MouseLeave
        //

        if (m_ppaneHit != ppaneHit) {
            if (m_ppaneHit) {
                m_ppaneHit->MouseLeave(pprovider);
            }
            m_ppaneHit = ppaneHit;
            if (m_ppaneHit) {
                m_ppaneHit->MouseEnter(
                    pprovider,
                    point - Point::Cast(m_ppaneHit->m_offset)
                );
            }
        } else if (m_ppaneHit) {
            m_ppaneHit->MouseMove(
                pprovider,
                point - Point::Cast(m_ppaneHit->m_offset),
                false,
                true
            );
        }
    }

    if (bInside) {
        return MouseResultHit();
    } else {
        return MouseResult();
    }
}
int Pane::GetAlignedXSize(int xPos)
{
    return XSize(); 
}
Exemple #7
0
XSize XSize::toValid() const
    {
    return XSize( fabs( _x ), fabs( _y ), fabs( _z ) );
    }