Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

XDisplayer Class Reference

#include <displayer.h>

Inheritance diagram for XDisplayer:

Inheritance graph
[legend]
Collaboration diagram for XDisplayer:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 XDisplayer (GtkWidget *drawingarea)
 X Displayer Constructor (retained for historical reasons - not used).
 ~XDisplayer ()
bool usable ()
 Indicates if an object can be used to render images on the running system.
DisplayerInput format ()
 Indicates the format required by the abstract put method.

Protected Member Functions

void put (void *data)

Private Attributes

bool canuse
int depth
GtkWidget * drawingarea
Display * display
Window window
GC gc
XImage * xImage
XGCValues values
XShmSegmentInfo shmInfo

Constructor & Destructor Documentation

XDisplayer::XDisplayer GtkWidget *  drawingarea  ) 
 

X Displayer Constructor (retained for historical reasons - not used).

Definition at line 384 of file displayer.cc.

References canuse, depth, display, gc, Displayer::preferredHeight(), shmInfo, values, window, and xImage.

00384                                                : xImage( NULL )
00385 {
00386     this->drawingarea = drawingarea;
00387     this->canuse = true;
00388 
00389     cerr << ">> Trying X Displayer" << endl;
00390 #if 0
00391 
00392     memset( &shmInfo, 0, sizeof( XShmSegmentInfo ) );
00393     GdkWindowPrivate *priv = ( GdkWindowPrivate* ) drawingarea->window;
00394     window = priv->xwindow;
00395     display = priv->xdisplay;
00396 
00397     gc = XCreateGC( display, window, 0, &values );
00398 
00399     Visual *v = ( ( GdkVisualPrivate * ) gdk_visual_get_system() ) ->xvisual;
00400     depth = DefaultDepth( display, DefaultScreen( display ) );
00401 
00402     xImage = ( XImage * ) XShmCreateImage( display, v, depth, ZPixmap,
00403                                            ( char * ) NULL, &shmInfo,
00404                                            this->preferredWidth(),
00405                                            this->preferredHeight() );
00406 
00407     shmInfo.shmid = shmget( IPC_PRIVATE,
00408                             this->preferredWidth() * this->preferredHeight() * 4,
00409                             IPC_CREAT | 0777 );
00410 
00411     shmInfo.shmaddr = ( char * ) shmat( shmInfo.shmid, 0, 0 );
00412     xImage->data = shmInfo.shmaddr;
00413     shmInfo.readOnly = 0;
00414     if ( !XShmAttach( display, &shmInfo ) )
00415     {
00416         this->canuse = false;
00417         fprintf( stderr, "Cannot attach shared memory\n" );
00418         xImage = NULL;
00419         return ;
00420     }
00421 #endif
00422 }

XDisplayer::~XDisplayer  ) 
 

Definition at line 424 of file displayer.cc.

References display, shmInfo, and xImage.

00425 {
00426 #if 0
00427     if ( shmInfo.shmaddr != NULL )
00428     {
00429         XShmDetach( display, &shmInfo );
00430         shmdt( shmInfo.shmaddr );
00431     }
00432     if ( xImage != NULL )
00433     {
00434         XDestroyImage( xImage );
00435     }
00436 #endif
00437 }


Member Function Documentation

DisplayerInput XDisplayer::format  )  [virtual]
 

Indicates the format required by the abstract put method.

Reimplemented from Displayer.

Definition at line 444 of file displayer.cc.

References DISPLAY_RGB.

00445 {
00446     return DISPLAY_RGB;
00447 }

void XDisplayer::put void *  data  )  [protected, virtual]
 

Implements Displayer.

Definition at line 449 of file displayer.cc.

References display, gc, Displayer::preferredHeight(), window, and xImage.

00450 {
00451     unsigned char * image = ( unsigned char * ) data;
00452     memcpy( xImage->data, image,
00453             this->preferredWidth() * this->preferredHeight() * 4 );
00454     XShmPutImage( display, window, gc, xImage, 0, 0, 0, 0,
00455                   this->preferredWidth(), this->preferredHeight(), false );
00456 }

bool XDisplayer::usable  )  [virtual]
 

Indicates if an object can be used to render images on the running system.

Reimplemented from Displayer.

Definition at line 439 of file displayer.cc.

References canuse.

00440 {
00441     return canuse;
00442 }


Member Data Documentation

bool XDisplayer::canuse [private]
 

Definition at line 136 of file displayer.h.

Referenced by usable(), and XDisplayer().

int XDisplayer::depth [private]
 

Definition at line 137 of file displayer.h.

Referenced by XDisplayer().

Display* XDisplayer::display [private]
 

Definition at line 139 of file displayer.h.

Referenced by put(), XDisplayer(), and ~XDisplayer().

GtkWidget* XDisplayer::drawingarea [private]
 

Definition at line 138 of file displayer.h.

GC XDisplayer::gc [private]
 

Definition at line 141 of file displayer.h.

Referenced by put(), and XDisplayer().

XShmSegmentInfo XDisplayer::shmInfo [private]
 

Definition at line 144 of file displayer.h.

Referenced by XDisplayer(), and ~XDisplayer().

XGCValues XDisplayer::values [private]
 

Definition at line 143 of file displayer.h.

Referenced by XDisplayer().

Window XDisplayer::window [private]
 

Definition at line 140 of file displayer.h.

Referenced by put(), and XDisplayer().

XImage* XDisplayer::xImage [private]
 

Definition at line 142 of file displayer.h.

Referenced by put(), XDisplayer(), and ~XDisplayer().


The documentation for this class was generated from the following files:
Generated on Sun Mar 11 22:13:29 2007 for Kino by  doxygen 1.4.2