commit x64 compilation from lulu cause the other branch dont seems to compile properly at home
This commit is contained in:
60
include/framework/picture/pict_draw_plot.cpp
Normal file
60
include/framework/picture/pict_draw_plot.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#include "picture/pict.h"
|
||||
#include "math/nmath.h"
|
||||
|
||||
using namespace GS;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void Picture::DrawPlot(float x, float y, float r, float g, float b, float a, const Rect <float> *clip_rect)
|
||||
{
|
||||
// Output validity.
|
||||
if (!data || (pxformat.GetBpp() != 32) || pxformat.IsReal())
|
||||
return;
|
||||
|
||||
// Clip primitive.
|
||||
if (clip_rect && ((x < clip_rect->sx) || (x >= clip_rect->ex) || (y < clip_rect->sy) || (y >= clip_rect->ey)))
|
||||
return;
|
||||
|
||||
// Draw.
|
||||
AlphaCompositePixel(GetDataOffset((uint)x, (uint)y), uchar(r * 255.f), uchar(g * 255.f), uchar(b * 255.f), uchar(a * 255.f));
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void Picture::DrawPlotHQ(float x, float y, float r, float g, float b, float a, const Rect <float> *clip_rect)
|
||||
{
|
||||
// Output validity.
|
||||
if (!data || (pxformat.GetBpp() != 32) || pxformat.IsReal())
|
||||
return;
|
||||
|
||||
// Clip primitive.
|
||||
if (clip_rect && ((x < clip_rect->sx) || (x >= (clip_rect->ex - 1)) || (y < clip_rect->sy) || (y >= (clip_rect->ey - 1))))
|
||||
return;
|
||||
|
||||
// Draw.
|
||||
uchar ir = uchar(r * 255.f),
|
||||
ig = uchar(g * 255.f),
|
||||
ib = uchar(b * 255.f),
|
||||
ia = uchar(a * 255.f);
|
||||
|
||||
float xm = Math::Floor(x),
|
||||
ym = Math::Floor(y);
|
||||
|
||||
float a0 = (xm + 1 - x) * (ym + 1 - y),
|
||||
a1 = (x - xm) * (ym + 1 - y),
|
||||
a2 = (xm + 1 - x) * (y - ym),
|
||||
a3 = (x - xm) * (y - ym);
|
||||
|
||||
uchar *output = GetDataOffset((uint)x, (uint)y);
|
||||
AlphaCompositePixel(output, ir, ig, ib, uchar(ia * a0));
|
||||
AlphaCompositePixel(output + 4, ir, ig, ib, uchar(ia * a1));
|
||||
AlphaCompositePixel(output + width * 4, ir, ig, ib, uchar(ia * a2));
|
||||
AlphaCompositePixel(output + (width + 1) * 4, ir, ig, ib, uchar(ia * a3));
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user