Example #1
0
// MW-2011-09-06: [[ Redraw ]] Added 'sprite' option - if true, ink and opacity are not set.
void MCPlayer::draw(MCDC *dc, const MCRectangle& p_dirty, bool p_isolated, bool p_sprite)
{
	MCRectangle dirty;
	dirty = p_dirty;
    
	if (!p_isolated)
	{
		// MW-2011-09-06: [[ Redraw ]] If rendering as a sprite, don't change opacity or ink.
		if (!p_sprite)
		{
			dc -> setopacity(blendlevel * 255 / 100);
			dc -> setfunction(ink);
		}
        
		// MW-2009-06-11: [[ Bitmap Effects ]]
		if (m_bitmap_effects == NULL)
			dc -> begin(false);
		else
		{
			if (!dc -> begin_with_effects(m_bitmap_effects, rect))
				return;
			dirty = dc -> getclip();
		}
	}
    
	if (MClook == LF_MOTIF && state & CS_KFOCUSED && !(extraflags & EF_NO_FOCUS_BORDER))
		drawfocus(dc, p_dirty);
    
	setforeground(dc, DI_BACK, False);
	dc->setbackground(MCscreen->getwhite());
	dc->setfillstyle(FillOpaqueStippled, nil, 0, 0);
	dc->fillrect(rect);
	dc->setbackground(MCzerocolor);
	dc->setfillstyle(FillSolid, nil, 0, 0);
    
	if (getflag(F_SHOW_BORDER))
	{
		if (getflag(F_3D))
			draw3d(dc, rect, ETCH_SUNKEN, borderwidth);
		else
			drawborder(dc, rect, borderwidth);
	}
	
	if (!p_isolated)
	{
		dc -> end();
	}
}
Example #2
0
// MW-2011-09-06: [[ Redraw ]] Added 'sprite' option - if true, ink and opacity are not set.
void MCEPS::draw(MCDC *dc, const MCRectangle &dirty, bool p_isolated, bool p_sprite)
{
	MCRectangle trect = rect;
	if (flags & F_SHOW_BORDER)
		trect = MCU_reduce_rect(trect, borderwidth);

	if (flags & F_OPAQUE)
	{
		setforeground(dc, DI_BACK, False);
		dc->fillrect(trect);
	}
	if (state & (CS_SIZE | CS_MOVE))
	{
		dc->setlineatts(0, LineDoubleDash, CapButt, JoinBevel);
		dc->setforeground(dc->getblack());
		dc->setbackground(dc->getwhite());
		dc->setfillstyle(FillSolid, nil, 0, 0);
		dc->setdashes(0, dashlist, 2);
		MCLineSegment segs[2];
		segs[0].x1 = segs[1].x1 = trect.x;
		segs[0].x2 = segs[1].x2 = trect.x + trect.width;
		segs[0].y1 = segs[1].y2 = trect.y;
		segs[0].y2 = segs[1].y1 = trect.y + trect.height;
		dc->drawsegments(segs, 2);
		dc->setlineatts(0, LineSolid, CapButt, JoinBevel);
		dc->setbackground(MCzerocolor);
	}

#ifdef HAVE_EPS
	else
	{
		const char *psprolog = postscript;
		uint4 psprologlength = 0;
		const char *ps;
		uint4 length;
		if ((pagecount == 0) || (pagecount == 1))
		{
			ps = postscript;
			length = strlen(postscript);
		}
		else
		{
			psprologlength = pageIndex[0];
			ps = &postscript[pageIndex[curpage - 1] - 1];
			if (curpage != pagecount)
				length = pageIndex[curpage] - pageIndex[curpage - 1];
			else
				length = size - pageIndex[curpage - 1];
		}
		setforeground(dc, DI_FORE, False);
		const char *fontname;
		uint2 fheight, fontsize, fontstyle;
		MCFontStruct *font;
		getfontatts(fontname, fheight, fontsize, fontstyle, font);
		dc->draweps(trect.x * xf, -(trect.y * yf), angle, xscale, yscale,
		            tx, ty, prolog, psprolog, psprologlength, ps, length,
		            fontname, fontsize, fontstyle, font, trect);
	}
#endif

	if (flags & F_SHOW_BORDER)
		trect = MCU_reduce_rect(trect, -borderwidth);
	if (flags & F_SHOW_BORDER)
		if (flags & F_3D)
			draw3d(dc, trect, ETCH_SUNKEN, borderwidth);
		else
			drawborder(dc, trect, borderwidth);
	if (getstate(CS_KFOCUSED))
		drawfocus(dc, dirty);
	if (state & CS_SELECTED)
		drawselected(dc);
}