Пример #1
0
void plD_esc_png(PLStream *pls, PLINT op, void *ptr)
{
    switch (op) {

      case PLESC_FILL:  /* fill */
	fill_polygon(pls);
	break;

#ifdef HAVE_FREETYPE
     case PLESC_HAS_TEXT:
        plD_render_freetype_text(pls, (EscText *)ptr);
        break;
#else
	(void) ptr;			/* pmr: make it used */
#endif

    }
}
Пример #2
0
/*--------------------------------------------------------------------------*\
 *  void plD_esc_wxwidgets( PLStream *pls, PLINT op, void *ptr )
 *
 *  Handler for several escape codes. Here we take care of filled polygons,
 *  XOR or copy mode, initialize device (install dc from outside), and if
 *  there is freetype support, rerendering of text.
\*--------------------------------------------------------------------------*/
void plD_esc_wxwidgets( PLStream *pls, PLINT op, void *ptr )
{
  // Log_Verbose( "plD_esc_wxwidgets(op=%d, ptr=%x)", op, ptr );

  wxPLDevBase* dev = (wxPLDevBase*)pls->dev;

  switch (op) {

  case PLESC_FILL:
    fill_polygon( pls );
    break;

	case PLESC_XORMOD:
		/* switch between wxXOR and wxCOPY */
    /* if( dev->ready ) {
			if( dev->m_dc->GetLogicalFunction() == wxCOPY )
				dev->m_dc->SetLogicalFunction( wxXOR );
			else if( dev->m_dc->GetLogicalFunction() == wxXOR )
				dev->m_dc->SetLogicalFunction( wxCOPY );
		} */
		break;

	case PLESC_DEVINIT:
    dev->SetExternalBuffer( ptr );

    /* replay begin of page call and state settings */
  	plD_bop_wxwidgets( pls );
    break;

  case PLESC_HAS_TEXT:
    if( !(dev->ready) )
      install_buffer( pls );

    if( dev->freetype ) {
#ifdef HAVE_FREETYPE
      plD_render_freetype_text( pls, (EscText *)ptr );
#endif
    } else
      dev->ProcessString( pls, (EscText *)ptr );
    break;

  case PLESC_RESIZE:
  	{
    	wxSize* size=(wxSize*)ptr;
    	wx_set_size( pls, size->GetWidth(), size->GetHeight() );
		}
    break;

	case PLESC_CLEAR:
		if( !(dev->ready) )
			install_buffer( pls );
		/* Since the plot is updated only every MAX_COMCOUNT commands (usually 5000)
			 before we clear the screen we need to show the plot at least once :) */
		if( !(dev->resizing) && dev->ownGUI ) {
				wxRunApp( pls, true );
				dev->comcount=0;
		}
		dev->ClearBackground( pls->cmap0[0].r, pls->cmap0[0].g, pls->cmap0[0].b,
													pls->sppxmi, pls->sppymi, pls->sppxma, pls->sppyma );
		break;

  case PLESC_GETC:
    if( dev->ownGUI )
      GetCursorCmd( pls, (PLGraphicsIn *) ptr );
	  break;

  case PLESC_GETBACKEND:
    *((int*)ptr) = dev->backend;
	  break;

  default:
    break;
  }
}