Commit 175ac7c6 authored by Emmanuel Puig's avatar Emmanuel Puig

* Added AddEllipse: the slider now works ! :)

parent c87aa25e
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* gtk2_graphics.cpp: GTK2 implementation of the Graphics and Region classes * gtk2_graphics.cpp: GTK2 implementation of the Graphics and Region classes
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: gtk2_graphics.cpp,v 1.10 2003/04/17 16:11:46 karibu Exp $ * $Id: gtk2_graphics.cpp,v 1.11 2003/04/17 16:30:40 karibu Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "gtk2_graphics.h" #include "gtk2_graphics.h"
#include <stdio.h> #include <stdio.h>
#include <math.h>
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// GTK2 GRAPHICS // GTK2 GRAPHICS
...@@ -128,7 +129,7 @@ GTK2Region::GTK2Region( int x, int y, int w, int h ) ...@@ -128,7 +129,7 @@ GTK2Region::GTK2Region( int x, int y, int w, int h )
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
GTK2Region::~GTK2Region() GTK2Region::~GTK2Region()
{ {
/* DeleteObject( Rgn );*/ gdk_region_destroy( Rgn );
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void GTK2Region::AddPoint( int x, int y ) void GTK2Region::AddPoint( int x, int y )
...@@ -149,11 +150,36 @@ void GTK2Region::AddRectangle( int x, int y, int w, int h ) ...@@ -149,11 +150,36 @@ void GTK2Region::AddRectangle( int x, int y, int w, int h )
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void GTK2Region::AddElipse( int x, int y, int w, int h ) void GTK2Region::AddElipse( int x, int y, int w, int h )
{ {
/* HRGN Buffer; GdkRegion *Buffer;
Buffer = CreateEllipticRgn( x, y, x + w, y + h ); GdkRectangle rect;
CombineRgn( Rgn, Buffer, Rgn, 0x2 ); rect.height = 1;
DeleteObject( Buffer );*/
/*FIXME*/ double ex, ey;
double a = w / 2;
double b = h / 2;
if( !a || !b )
return;
for( ey = 0; ey < h; ey++ )
{
// Calculate coords
ex = a * sqrt( 1 - ey * ey / ( b * b ) );
// Upper line
rect.x = (gint)( x + a - ex );
rect.y = (gint)( y + b - ey );
rect.width = (gint)( 2 * ex );
Buffer = gdk_region_rectangle( &rect );
gdk_region_union( Rgn, Buffer );
gdk_region_destroy( Buffer );
// Lower line
rect.y = (gint)( y + b + ey );
Buffer = gdk_region_rectangle( &rect );
gdk_region_union( Rgn, Buffer );
gdk_region_destroy( Buffer );
}
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void GTK2Region::Move( int x, int y ) void GTK2Region::Move( int x, int y )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment