예제 #1
0
void NCNumberWin::Paint( wal::GC& gc, const crect& paintRect )
{
	crect rect = ClientRect();
	gc.SetFillColor( UiGetColor( uiBackground, 0, 0, 0xFFFFFF ) );
	gc.FillRect( rect );
	gc.SetTextColor( UiGetColor( uiColor, 0, 0, 0 ) );
	gc.Set( GetFont() );

	unicode_t c[32];
	unicode_t buf[32];
	unicode_t* s = buf;

	int64_t n = _num;
	bool minus = n < 0;

	if ( minus ) { n = -n; }

	int i = 0;

	for ( ; n > 0; i++, n /= 10 ) { c[i] = char( n % 10 ) + '0'; }

	if ( minus ) { *s = '-'; s++; }

	if ( i == 0 ) {*s = '0'; s++; };

	for ( i--; i >= 0; i-- ) { *( s++ ) = c[i]; }

	*s = 0;

	gc.TextOut( 0, 0, buf );
}
예제 #2
0
void TBToolTip::Paint(wal::GC &gc, const crect &paintRect)
{
	gc.SetFillColor(UiGetColor(uiBackground, 0,0, 0xFFFFFF)/*GetColor(IC_BG)*/); //0x80FFFF);
	crect r = ClientRect();
	gc.FillRect(r);
	gc.SetTextColor(UiGetColor(uiColor, 0,0, 0)/*GetColor(IC_TEXT)*/);
	//gc.TextOutF(0,0,text.ptr());
	 DrawStaticText(gc, 2, 1, text.ptr(), GetFont(), false);
}
예제 #3
0
void clFileAssociationsListWin::DrawItem( wal::GC& gc, int n, crect rect )
{
	if ( n < 0 || n >= ( int )m_ItemList->size( ) )
	{
		gc.SetFillColor( UiGetColor( uiBackground, 0, 0, 0xB0B000 ) );
		gc.FillRect( rect ); //CCC
		return;
	}

	UiCondList ucl;

	if ( ( n % 2 ) == 0 ) { ucl.Set( uiOdd, true ); }

	if ( n == this->GetCurrent() ) { ucl.Set( uiCurrentItem, true ); }

	unsigned bg = UiGetColor( uiBackground, uiItem, &ucl, 0xB0B000 );
	unsigned color = UiGetColor( uiColor, uiItem, &ucl, 0 );
	unsigned fcColor = UiGetColor( uiFcColor, uiItem, &ucl, 0xFFFF );

	gc.SetFillColor( bg );
	gc.FillRect( rect );

	const clNCFileAssociation* p = &m_ItemList->at( n );

	if ( p )
	{
		gc.Set( GetFont() );
		gc.SetTextColor( color );
		gc.TextOutF( rect.left + 10, rect.top + 1, p->GetMask().data() );
		gc.SetTextColor( fcColor );
		gc.TextOutF( rect.left + 10, rect.top + 1, p->GetMask().data(), 1 );
	}
}
예제 #4
0
void NCDialog::Paint( wal::GC& gc, const crect& paintRect )
{
	int bcolor = UiGetColor( uiBackground, 0, 0, 0x808080 );

	gc.SetFillColor( bcolor );
	gc.FillRect( _borderRect );
	Draw3DButtonW2( gc, _borderRect, bcolor, true );
	crect rect = _frameRect;
	Draw3DButtonW2( gc, _frameRect, bcolor, false );
	rect.Dec();
	rect.Dec();
	DrawBorder( gc, rect, 0 );
}
예제 #5
0
void CharsetListWin::DrawItem(wal::GC &gc, int n, crect rect)
{
	if (cList && n >= 0 && n < cCount)
	{
		bool frame = false;
		
		UiCondList ucl;
		if ((n % 2)==0) ucl.Set(uiOdd, true);
		if (n == this->GetCurrent()) ucl.Set(uiCurrentItem, true);
		
		unsigned bg = UiGetColor(uiBackground, uiItem, &ucl, 0xFFFFFF);
		unsigned textColor = UiGetColor(uiColor, uiItem, &ucl, 0);
		unsigned frameColor = UiGetColor(uiFrameColor, uiItem, &ucl, 0);;

		if (n == this->GetCurrent())
			frame = true;
			
		gc.SetFillColor(bg);
		gc.FillRect(rect);
		gc.Set(GetFont());

		int x = 0;
		const unicode_t *txt = 0;

		gc.SetTextColor(textColor);
		gc.TextOutF(rect.left+10, rect.top+2, utf8_to_unicode(cList[n]->name).ptr());
		gc.TextOutF(rect.left+10+15*fontW, rect.top+2, utf8_to_unicode(cList[n]->comment).ptr() );
	} else {
		gc.SetFillColor(UiGetColor(uiBackground, uiItem, 0, 0xFFFFFF));
		gc.FillRect(rect);
	}
}
예제 #6
0
void OperFileNameWin::Paint(wal::GC &gc, const crect &paintRect)
{
	crect rect = ClientRect();
	gc.SetFillColor(UiGetColor(uiBackground,0,0,0xFFFFFF));
	gc.FillRect(rect); 
	gc.SetTextColor(UiGetColor(uiColor,0,0,0));
	gc.Set(GetFont());
	
	unicode_t *p = text.ptr();
	if (p) 
	{
		int l = unicode_strlen(p);
		if (l > _ccount) 
		{
			p += l - _ccount;
		}
		DrawStaticText(gc,0,0,p);
	}
}
예제 #7
0
void FillHorisontalRect(wal::GC &gc, crect rect, unsigned a, unsigned b)
{
	 unsigned	ar = a & 0xFF, 	ag = (a>>8) & 0xFF, ab = (a>>16) & 0xFF,
			br = b & 0xFF, bg = (b>>8) & 0xFF, bb = (b>>16) & 0xFF;

	int h = rect.Height();
	int x1 = rect.left, x2 = rect.right;

	if (h<=0 || x1>=x2) return;

	for (int i = 0; i<h; i++)
	{
		unsigned color = (MidAB(ar, br, i, h) & 0xFF) + ((MidAB(ag, bg, i, h) & 0xFF)<<8) + ((MidAB(ab, bb, i, h)&0xFF)<<16);
		gc.SetLine(color);
		gc.MoveTo(x1,rect.top+i);
		gc.LineTo(x2,rect.top+i);
	}

}
예제 #8
0
void ToolBar::DrawNode( wal::GC& gc, Node* pNode, int state )
{
	if ( !pNode ) { return; }

	int W = pNode->rect.Width();
	int H = pNode->rect.Height();

	if ( W <= 0 || H <= 0 ) { return; }

	int x = pNode->rect.left + 1 + XSPACE;
	int y = pNode->rect.top + 1 + YSPACE;

	unsigned bgColor = UiGetColor( uiBackground, uiItem, 0, 0x808080 ); //GetColor(0);
	unsigned frameColor = ColorTone( bgColor, -150 );

	if ( state == DRAW_PRESSED )
	{
		bgColor = ColorTone( bgColor, -50 );
	}

	gc.SetFillColor( bgColor );

	{
		crect r = pNode->rect;
		r.Dec();
		gc.FillRect( r );
	}

	if ( pNode->icon.ptr() && pNode->icon->Valid() )
	{
		pNode->icon->DrawF( gc, x, y );
		x += _iconSize;
	}

	if ( state != DRAW_NORMAL )
	{
		DrawBorder( gc, pNode->rect, frameColor );
	}
}
예제 #9
0
void ToolBar::Paint( wal::GC& gc, const crect& paintRect )
{
	crect cr = ClientRect();
	crect rect = cr;
	unsigned colorBg = UiGetColor( uiBackground, 0, 0, 0x808080 ); //GetColor(0);

	unsigned splitColor1 = ColorTone( colorBg, -70 );
	unsigned splitColor2 = ColorTone( colorBg, 70 );

	if ( g_WcmConfig.styleShow3DUI )
	{
		Draw3DButtonW2( gc, rect, colorBg, true );
		rect.Dec();
		rect.Dec();
	}

	gc.SetFillColor( colorBg );
	gc.FillRect( rect );

	gc.Set( GetFont() );
	int x = 2;

	for ( size_t i = 0; i < _list.size(); i++ )
	{
		Node* p = _list[i].ptr();

		if ( p )
		{
			DrawNode( gc, p, _pressed == p ? DRAW_PRESSED : DRAW_NORMAL );
			x += p->rect.Width();
		}
		else
		{
			gc.SetFillColor( splitColor1 );
			int x1 = x + SPLITTER_WIDTH / 2;
			gc.FillRect( crect( x1, rect.top, x1 + 1, rect.bottom ) );
			gc.SetFillColor( splitColor2 );
			gc.FillRect( crect( x1 + 2, rect.top, x1 + 2, rect.bottom ) );
			x += SPLITTER_WIDTH;

		}
	}

	return;
}
예제 #10
0
void PathListWin::DrawItem(wal::GC& gc, int n, crect rect)
{
    const PathList::Data* curr = m_dataList.GetData(n);
    if (curr)
    {
		 std::vector<unicode_t> text = GetItemText( curr );

        UiCondList ucl;
        if ((n % 2) == 0)
        {
            ucl.Set(uiOdd, true);
        }

        if (n == this->GetCurrent())
        {
            ucl.Set(uiCurrentItem, true);
        }

        unsigned bg = UiGetColor(uiBackground, uiItem, &ucl, 0xB0B000);
        unsigned color = UiGetColor(uiColor, uiItem, &ucl, 0);
//        unsigned fcColor = UiGetColor(uiFcColor, uiItem, &ucl, 0xFFFF);

        gc.SetFillColor(bg);
        gc.FillRect(rect);

        gc.Set(GetFont());
        gc.SetTextColor(color);
		  gc.TextOutF( rect.left + 10, rect.top + 1, text.data() );
        //gc.SetTextColor(fcColor);
        //gc.TextOutF(rect.left + 10, rect.top + 1, name, 1);
    }
    else
    {
        gc.SetFillColor(UiGetColor(uiBackground, 0, 0, 0xB0B000));
        gc.FillRect(rect);
    }
}
예제 #11
0
void NCShadowWin::Paint( wal::GC& gc, const crect& paintRect )
{
	crect cr = ClientRect();
	gc.SetFillColor( 0 ); //::g_WcmConfig.whiteStyle ? 0x404040 : 0x01);
	gc.FillRect( cr );
}
예제 #12
0
void clSelectDriveDlgMenu::Paint( wal::GC& gc, const crect& paintRect )
{
	cfont* font = GetFont();
	gc.Set( font );
	int y = 0;

	int bgColor = UiGetColor( uiBackground, 0, 0, 0xB0B000 );

	int count = _data->Count();

	int Splitters = 0;
	int SplitterTop = 0;
	int SplitterBottom = 0;

	for ( int i = 0; i < count; i++ )
	{
		if ( _data->list[i].cmd == 0 )
		{
			gc.SetFillColor( bgColor );
			gc.FillRect( crect( 0, y, _width, y + _splitterH ) );
			crect rect( 0, y + 1, 0 + _width, y + 2 );
			gc.SetFillColor( ColorTone( bgColor, -150 ) );
			gc.FillRect( rect );
			rect.top += 1;
			rect.bottom += 1;
			gc.SetFillColor( ColorTone( bgColor, +50 ) );
			gc.FillRect( rect );
			y += _splitterH;
			Splitters++;

			if ( Splitters == 1 ) { SplitterTop = y; }

			if ( Splitters == 2 ) { SplitterBottom = y - _splitterH; }
		}
		else
		{
			UiCondList ucl;

			if ( i == _current ) { ucl.Set( uiCurrentItem, true ); }

			unsigned bg = UiGetColor( uiBackground, uiItem, &ucl, 0xFFFFFF );
			unsigned textColor = UiGetColor( uiColor, uiItem, &ucl, 0 );
			unsigned fcColor = UiGetColor( uiFcColor, uiItem, &ucl, 0xFF );
			unsigned commentColor = UiGetColor( uiCommentColor, uiItem, &ucl, 0 );

			gc.SetFillColor( bg );
			gc.FillRect( crect( 0, y, _width, y + _itemH ) );

			cicon icon;

			if ( _data->list[i].icon >= 0 )
			{
				icon.Load( _data->list[i].icon, 16, 16 );
			}
			else
			{
				icon.Load( _data->list[i].cmd, 16, 16 );
			}

			gc.DrawIcon( 0, y, &icon );
			gc.SetTextColor( textColor );
			int x = 16 + 5;

			const unicode_t* name = _data->list[i].name.data();
			const unicode_t* comment1 = _data->list[i].comment1.data();
			const unicode_t* comment2 = _data->list[i].comment2.data();

			if ( name )
			{
				gc.TextOutF( x, y, name );
				gc.SetTextColor( fcColor );
				gc.TextOutF( x, y, name, 1 );
			}

			if ( comment1 )
			{
				gc.SetTextColor( commentColor );
				gc.TextOutF( x + _nameW + 5, y, comment1 );
			}

			if ( comment2 )
			{
				gc.SetTextColor( commentColor );
				gc.TextOutF( x + _nameW + 5 + _comment1W + 30, y, comment2 );
			}

			y += _itemH;
		}
	}

	if ( _comment2W && SplitterTop && SplitterBottom )
	{
		int cx = _nameW + 5 + _comment1W + 30;
		gc.SetFillColor( ColorTone( bgColor, -150 ) );
		gc.FillRect( crect( cx, SplitterTop, cx + _splitterW, SplitterBottom ) );
	}
}
예제 #13
0
void Win32CompatibleBitmap::Put(wal::GC &gc, int src_x, int src_y, int dest_x, int dest_y, int w, int h)
{
	if (!handle) return;
	
	int right = src_x + w;
	int bottom = src_y + h;
	if (src_x<0) src_x = 0;
	if (src_y<0) src_y = 0;
	if (right > _w) right=_w;
	if (bottom > _h) bottom = _h;
	w = right - src_x;
	h = bottom - src_y;
	
	if (w<=0 || h<=0) return;

	HDC dc = CreateCompatibleDC(gc.W32Handle());
	if (!dc) return;
	HGDIOBJ old = SelectObject(dc, handle);
	
	if (mask.ptr()) 
	{
		crect r(0,-1,0,-1);
		char *m = mask.ptr();	
		for (int y = src_y; y < bottom; y++, m += _w)
		{
			int x = src_x;
			while (x < right) {
				while (x<right && !m[x]) x++;
				if (x < right)
				{
					int x1 = x;
					while (x < right && m[x]) x++;
					if (r.bottom == y && r.left == x1 && r.right == x)
					{
						r.bottom++;
					} else {
						if (!r.IsEmpty()) {
							BitBlt(gc.W32Handle(),dest_x + r.left, dest_y + r.top, r.Width(), r.Height(), dc, r.left, r.top,
								SRCCOPY);
						//	XPutImage(display, gc.GetXDrawable(), gc.XHandle(), &im, r.left, r.top, 
						//	dest_x + r.left, dest_y + r.top, r.Width(), r.Height());
						}
						r.Set(x1, y, x, y+1);
					}
				} 
			}
		}
		if (!r.IsEmpty()) {
			BitBlt(gc.W32Handle(),dest_x + r.left, dest_y + r.top, r.Width(), r.Height(), dc, r.left, r.top,
								SRCCOPY);
			//XPutImage(display, gc.GetXDrawable(), gc.XHandle(), &im, r.left, r.top, 
			//	dest_x + r.left, dest_y + r.top, r.Width(), r.Height());
		}

		
	} else {
		BitBlt(gc.W32Handle(),dest_x, dest_y, w, h, dc, src_x, src_y,
								SRCCOPY);
		//XPutImage(display, gc.GetXDrawable(), gc.XHandle(), &im, src_x, src_y, dest_x, dest_y, w, h);
	}

	::SelectObject(dc, old);
	DeleteDC(dc);
}