extern reg_set_index RegIntersect( reg_set_index s1, reg_set_index s2 ) /**********************************************************************/ { if( s1 == s2 ) return( s1 ); switch( _Combine( s1, s2 ) ) { default: if( s1 == RL_NUMBER_OF_SETS ) return( s2 ); if( s2 == RL_NUMBER_OF_SETS ) return( s1 ); return( RL_ ); } }
// // Add a splash of colour // COLORREF _CombineBasedOnType(int iTabType, COLORREF clrSource) { RGBQUAD source = { 0 }; source.rgbBlue = GetBValue(clrSource); source.rgbGreen = GetGValue(clrSource); source.rgbRed = GetRValue(clrSource); COLORREF clr; switch (iTabType) { case TAB_PIC: // green { RGBQUAD tint = { 15, 255, 165 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_TEXT: // cyan { RGBQUAD tint = { 255, 255, 155 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_SOUND: // orange? { RGBQUAD tint = { 255, 0, 0 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_VIEW: // blue { RGBQUAD tint = { 239, 132, 33 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_FONT: // yellow { RGBQUAD tint = { 0, 255, 255}; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_VOCAB: // flesh { RGBQUAD tint = { 162, 206, 255 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_SCRIPT: // red { RGBQUAD tint = { 25, 25, 255 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_CURSOR: // pink { RGBQUAD tint = { 172, 172, 255 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_GAME: // grey { RGBQUAD tint = { 128, 128, 128 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; default: clr = clrSource; break; } return clr; }
void CColorPickerButton::_OnDraw(HDC hdc, RECT *prc, EGACOLOR color) { CDC *pDC = CDC::FromHandle(hdc); if (pDC) { // Figure out the right color - do color 1 for now. RGBQUAD color1 = EGA_TO_RGBQUAD(color.color1); RGBQUAD color2 = EGA_TO_RGBQUAD(color.color2); CBitmap bm; if (CreateDCCompatiblePattern(color1, color2, pDC, &bm)) { CBrush brushPat; if (brushPat.CreatePatternBrush(&bm)) { CRect rcShrunk(prc->left + 1, prc->top + 1, prc->right - 1, prc->bottom - 1); pDC->FillRect(&rcShrunk, &brushPat); } } //int cx = RECTWIDTH(*prc) / 2; //int cy = RECTHEIGHT(*prc) / 2; //RECT rectOverlay = { prc->left + cx, prc->top + cy, prc->right, prc->bottom }; int iModePrev = pDC->SetBkMode(TRANSPARENT); RGBQUAD colorCombine = _Combine(color1, color2); RGBQUAD colorTL = _Lighter(colorCombine); RGBQUAD colorBR = _Darker(colorCombine); // Draw an x maybe if (!_bOn) { /* RGBQUAD colorRedder = _Redden(colorCombine); CPen penX(PS_SOLID, 1, RGB_TO_COLORREF(colorRedder)); HGDIOBJ hgdiObjOld = pDC->SelectObject(&penX); pDC->MoveTo(prc->left, prc->bottom); pDC->LineTo(prc->right, prc->top); pDC->MoveTo(prc->left, prc->top); pDC->LineTo(prc->right, prc->bottom); pDC->SelectObject(hgdiObjOld);*/ } /* // Do highlights. CPen penTL(PS_SOLID, 2, RGB_TO_COLORREF(colorTL)); HGDIOBJ hgdiObj = pDC->SelectObject(&penTL); pDC->MoveTo(prc->left + 1, prc->bottom - 1); pDC->LineTo(prc->left + 1, prc->top + 1); pDC->LineTo(prc->right - 1, prc->top + 1); CPen penBR(PS_SOLID, 2, RGB_TO_COLORREF(colorBR)); pDC->SelectObject(&penBR); pDC->LineTo(prc->right -1 , prc->bottom - 1); pDC->LineTo(prc->left + 1, prc->bottom - 1); pDC->SelectObject(hgdiObj);*/ // Draw some text. int iColorPrev = pDC->SetTextColor(_GetTextColor(colorCombine)); CString text; GetWindowText(text); pDC->DrawText(text, prc, DT_CENTER | DT_VCENTER | DT_SINGLELINE); pDC->SetTextColor(iColorPrev); CRect rcPadding(0, 0, 0, 0); if (_bOn) { CRect rcSrc(CPoint(0, 0), g_bitmapHighlight.GetSize()); g_bitmapHighlight.AlphaBlendSkinParts(hdc, *prc, rcSrc, rcPadding, /*__EXT_BMP_FLAG_PREMULTIPLIED_RGB_CHANNELS |*/ CExtBitmap::__EDM_STRETCH, true, true, 0xFF); } else { CRect rcSrc(CPoint(0, 0), g_bitmapHighlightX.GetSize()); g_bitmapHighlightX.AlphaBlendSkinParts(hdc, *prc, rcSrc, rcPadding, /*__EXT_BMP_FLAG_PREMULTIPLIED_RGB_CHANNELS |*/ CExtBitmap::__EDM_STRETCH, true, true, 0xFF); } pDC->SetBkMode(iModePrev); } }