Example #1
0
void GlPlanes::GetHsv(int32 pix, float* hue, float* s, float* v) const
{
	ArpASSERT(HasColor());
	ArpASSERT(pix >= 0 && pix < w * h);
	float		fr = glTable256[r[pix]];
	float		fg = glTable256[g[pix]];
	float		fb = glTable256[b[pix]];
	float		min, max;
	min = gl_min_3(fr, fg, fb);
	max = gl_max_3(fr, fg, fb);
	*v = max;							// v
	if (!hue || !s) return;
	float		delta = max - min;
	if (max != 0)
		*s = delta / max;				// s
	else {
		// r = g = b = 0				// s = 0, hue is undefined
		*s = 0;
		*hue = -1;
		return;
	}
	if (fr == max)
		*hue = (fg - fb) / delta;			// between yellow & magenta
	else if (fg == max)
		*hue = 2 + (fb - fr) / delta;		// between cyan & yellow
	else
		*hue = 4 + (fr - fg) / delta;		// between magenta & cyan
	*hue *= 60;							// degrees
	if (*hue < 0)
		*hue += 360;
}
Example #2
0
uint8 GlPlanes::Value(int32 pix) const
{
	ArpASSERT(HasColor());
	ArpASSERT(pix >= 0 && pix < w * h);
	if (gInitValue)
		return arp_clip_255(gScaledR[r[pix]] + gScaledG[g[pix]] + gScaledB[b[pix]]);
	uint8		v = (r[pix] > g[pix]) ? r[pix] : g[pix];
	return (v > b[pix]) ? v : b[pix];
}
COLORREF COXTreeItem::GetItemColor(int nCol) const
{
	ASSERT(HasColor(nCol));
	if(!nCol)
		return m_clr;
	COXTreeSubItem *pSubItem = GetSubItem(nCol);
	if(!pSubItem)
	{
		ASSERT(FALSE);
		return 0;
	}
	return pSubItem->m_clr;
}
Example #4
0
void GlPlanes::SetHsv(int32 pix, float hue, float s, float v)
{
	ArpASSERT(HasColor());
	ArpASSERT(pix >= 0 && pix < w * h);
	int		i;
	float	f, p, q, t;
	if (s == 0) {
		// achromatic (grey)
		r[pix] = g[pix] = b[pix] = arp_clip_255(v * 255);
		return;
	}
	hue /= 60;                        // sector 0 to 5
	i = int(floor(hue));
	f = hue - i;                      // factorial part of hue
	p = v * (1 - s);
	q = v * (1 - s * f);
	t = v * (1 - s * (1 - f));
	switch (i) {
		case 0:
			r[pix] = arp_clip_255(v * 255);
			g[pix] = arp_clip_255(t * 255);
			b[pix] = arp_clip_255(p * 255);
			break;
		case 1:
			r[pix] = arp_clip_255(q * 255);
			g[pix] = arp_clip_255(v * 255);
			b[pix] = arp_clip_255(p * 255);
			break;
		case 2:
			r[pix] = arp_clip_255(p * 255);
			g[pix] = arp_clip_255(v * 255);
			b[pix] = arp_clip_255(t * 255);
			break;
		case 3:
			r[pix] = arp_clip_255(p * 255);
			g[pix] = arp_clip_255(q * 255);
			b[pix] = arp_clip_255(v * 255);
			break;
		case 4:
			r[pix] = arp_clip_255(t * 255);
			g[pix] = arp_clip_255(p * 255);
			b[pix] = arp_clip_255(v * 255);
			break;
		default:
			r[pix] = arp_clip_255(v * 255);
			g[pix] = arp_clip_255(p * 255);
			b[pix] = arp_clip_255(q * 255);
			break;
	}
}
LRESULT CTDCTaskListCtrl::OnListCustomDraw(NMLVCUSTOMDRAW* pLVCD)
{
	HWND hwndList = pLVCD->nmcd.hdr.hwndFrom;
	int nItem = (int)pLVCD->nmcd.dwItemSpec;
	DWORD dwTaskID = pLVCD->nmcd.lItemlParam;

	if (hwndList == m_lcColumns)
	{
		// columns handled by base class
		return CTDCTaskCtrlBase::OnListCustomDraw(pLVCD);
	}

	switch (pLVCD->nmcd.dwDrawStage)
	{
	case CDDS_PREPAINT:
		return CDRF_NOTIFYITEMDRAW;
								
	case CDDS_ITEMPREPAINT:
		{
			CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
			BOOL bAlternate = (IsColumnLineOdd(nItem) && HasColor(m_crAltLine));

			COLORREF crBack = (bAlternate ? m_crAltLine : GetSysColor(COLOR_WINDOW));

			if (HasStyle(TDCS_TASKCOLORISBACKGROUND))
			{
				GetTaskTextColors(dwTaskID, pLVCD->clrText, pLVCD->clrTextBk);

				if (pLVCD->clrTextBk != CLR_NONE)
					crBack = pLVCD->clrTextBk;
			}
			pLVCD->clrTextBk = pLVCD->clrText = crBack;

 			if (!OsIsXP())
			{
				GraphicsMisc::FillItemRect(pDC, &pLVCD->nmcd.rc, crBack, m_lcTasks);
				ListView_SetBkColor(m_lcTasks, crBack);
			}
		
			return (CDRF_NOTIFYPOSTPAINT | CDRF_NEWFONT); // always
		}
		break;

	case CDDS_ITEMPOSTPAINT:
		{
			const TODOITEM* pTDI = NULL;
			const TODOSTRUCTURE* pTDS = NULL;
			
			DWORD dwTaskID = GetTaskID(nItem), dwTrueID(dwTaskID);
			
			if (m_data.GetTask(dwTrueID, pTDI, pTDS))
			{
				CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
				CFont* pOldFont = pDC->SelectObject(GetTaskFont(pTDI, pTDS, FALSE));

				GM_ITEMSTATE nState = GetListItemState(nItem);

				BOOL bSelected = (nState != GMIS_NONE);
				BOOL bAlternate = (IsColumnLineOdd(nItem) && HasColor(m_crAltLine));
				
				COLORREF crBack, crText;
				VERIFY(GetTaskTextColors(pTDI, pTDS, crText, crBack, (dwTaskID != dwTrueID), bSelected));

				// draw background
				CRect rRow(pLVCD->nmcd.rc);

				// extra for XP
				if (OsIsXP())
					m_lcTasks.GetItemRect(nItem, rRow, LVIR_BOUNDS);
		
				CRect rItem;
				GetItemTitleRect(nItem, TDCTR_LABEL, rItem, pDC, pTDI->sTitle);
				
				DrawTasksRowBackground(pDC, rRow, rItem, nState, bAlternate, crBack);
				
				// draw text
				DrawColumnText(pDC, pTDI->sTitle, rItem, DT_LEFT, crText, TRUE);
				rItem.right = (rItem.left + pDC->GetTextExtent(pTDI->sTitle).cx + LV_COLPADDING);
				
				// cleanup
				pDC->SelectObject(pOldFont);

				// render comment text
				DrawCommentsText(pDC, rRow, rItem, pTDI, pTDS);
			}

			// restore default back colour
			ListView_SetBkColor(m_lcTasks, GetSysColor(COLOR_WINDOW));

			return CDRF_SKIPDEFAULT; // always
		}
		break;
	}
	
	return CDRF_DODEFAULT;
}