Exemplo n.º 1
0
/*
  This function modifies the conversion_flags when an options menu item
  is selected, then ensures all menu items are up to date, and reconverts
  the image if possibly necessary.
*/
void ImageViewer::doOption(int item)
{
    if ( item == ss || item == cc ) {
	// Toggle
	bool newbool = !options->isItemChecked(item);
	options->setItemChecked(item, newbool);
	// And reconvert...
	reconvertImage();
	repaint(image.hasAlphaBuffer());	// show image in widget
	return;
    }

    if ( options->isItemChecked( item ) ) return; // They are all radio buttons

    int ocf = conversion_flags;

    if ( item == ac ) {
	conversion_flags = ( conversion_flags & ~ColorMode_Mask ) | AutoColor;
    } else if ( item == co ) {
	conversion_flags = ( conversion_flags & ~ColorMode_Mask ) | ColorOnly;
    } else if ( item == mo ) {
	conversion_flags = ( conversion_flags & ~ColorMode_Mask ) | MonoOnly;
    } else if ( item == fd ) {
	conversion_flags = ( conversion_flags & ~Dither_Mask ) | DiffuseDither;
    } else if ( item == bd ) {
	conversion_flags = ( conversion_flags & ~Dither_Mask ) | OrderedDither;
    } else if ( item == td ) {
	conversion_flags = ( conversion_flags & ~Dither_Mask ) | ThresholdDither;
    } else if ( item == ta ) {
	conversion_flags = ( conversion_flags & ~AlphaDither_Mask ) | ThresholdAlphaDither;
    } else if ( item == fa ) {
	conversion_flags = ( conversion_flags & ~AlphaDither_Mask ) | DiffuseAlphaDither;
    } else if ( item == ba ) {
	conversion_flags = ( conversion_flags & ~AlphaDither_Mask ) | OrderedAlphaDither;
    } else if ( item == ad ) {
	conversion_flags = ( conversion_flags & ~DitherMode_Mask ) | PreferDither;
    } else if ( item == dd ) {
	conversion_flags = ( conversion_flags & ~DitherMode_Mask ) | AvoidDither;
    }

    if ( ocf != conversion_flags ) {
	setMenuItemFlags();
	// And reconvert...
	reconvertImage();
	repaint(image.hasAlphaBuffer());	// show image in widget
    }
}
Exemplo n.º 2
0
/*
  In the constructor, we just pass the standard parameters on to
  QWidget.

  The menu uses a single slot to simplify the process of adding
  more items to the options menu.
*/
ImageViewer::ImageViewer( QWidget *parent, const char *name, int wFlags )
    : QWidget( parent, name, wFlags ),
      conversion_flags( PreferDither ),
      helpmsg( 0 )
{
    pickx = -1;
    picky = -1;
    clickx = -1;
    clicky = -1;
    alloc_context = 0;

    menubar = new QMenuBar(this);
    menubar->setSeparator( QMenuBar::InWindowsStyle );

    QStrList fmt = QImage::outputFormats();
    saveimage = new QPopupMenu( menubar );
    savepixmap = new QPopupMenu( menubar );
    for (const char* f = fmt.first(); f; f = fmt.next()) {
	saveimage->insertItem( f );
	savepixmap->insertItem( f );
    }
    connect( saveimage, SIGNAL(activated(int)), this, SLOT(saveImage(int)) );
    connect( savepixmap, SIGNAL(activated(int)), this, SLOT(savePixmap(int)) );

    file = new QPopupMenu( menubar );
    menubar->insertItem( "&File", file );
    file->insertItem( "&New window", this,  SLOT(newWindow()), CTRL+Key_N );
    file->insertItem( "&Open...", this,  SLOT(openFile()), CTRL+Key_O );
    si = file->insertItem( "Save image", saveimage );
    sp = file->insertItem( "Save pixmap", savepixmap );
    file->insertSeparator();
    file->insertItem( "E&xit", qApp,  SLOT(quit()), CTRL+Key_Q );

    edit =  new QPopupMenu( menubar );
    menubar->insertItem( "&Edit", edit );
    edit->insertItem("&Copy", this, SLOT(copy()), CTRL+Key_C);
    edit->insertItem("&Paste", this, SLOT(paste()), CTRL+Key_V);
    edit->insertSeparator();
    edit->insertItem("&Horizontal flip", this, SLOT(hFlip()), ALT+Key_H);
    edit->insertItem("&Vertical flip", this, SLOT(vFlip()), ALT+Key_V);
    edit->insertItem("&Rotate 180", this, SLOT(rot180()), ALT+Key_R);
    edit->insertSeparator();
    edit->insertItem("&Text...", this, SLOT(editText()));
    edit->insertSeparator();
    t1 = edit->insertItem( "Convert to &1 bit", this, SLOT(to1Bit()) );
    t8 = edit->insertItem( "Convert to &8 bit", this, SLOT(to8Bit()) );
    t32 = edit->insertItem( "Convert to &32 bit", this, SLOT(to32Bit()) );

    options =  new QPopupMenu( menubar );
    menubar->insertItem( "&Options", options );
    ac = options->insertItem( "AutoColor" );
    co = options->insertItem( "ColorOnly" );
    mo = options->insertItem( "MonoOnly" );
    options->insertSeparator();
    fd = options->insertItem( "DiffuseDither" );
    bd = options->insertItem( "OrderedDither" );
    td = options->insertItem( "ThresholdDither" );
    options->insertSeparator();
    ta = options->insertItem( "ThresholdAlphaDither" );
    ba = options->insertItem( "OrderedAlphaDither" );
    fa = options->insertItem( "DiffuseAlphaDither" );
    options->insertSeparator();
    ad = options->insertItem( "PreferDither" );
    dd = options->insertItem( "AvoidDither" );
    options->insertSeparator();
    ss = options->insertItem( "Smooth scaling" );
    cc = options->insertItem( "Use color context" );
    if ( QApplication::colorSpec() == QApplication::ManyColor )
	options->setItemEnabled( cc, FALSE );
    options->setCheckable( TRUE );
    setMenuItemFlags();

    menubar->insertSeparator();

    QPopupMenu* help = new QPopupMenu( menubar );
    menubar->insertItem( "&Help", help );
    help->insertItem( "Help!", this, SLOT(giveHelp()), CTRL+Key_H );

    connect( options, SIGNAL(activated(int)), this, SLOT(doOption(int)) );

    status = new QLabel(this);
    status->setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
    status->setFixedHeight( fontMetrics().height() + 4 );

    setMouseTracking( TRUE );
}
Exemplo n.º 3
0
/*
  In the constructor, we just pass the standard parameters on to
  QWidget.

  The menu uses a single slot to simplify the process of adding
  more items to the options menu.
*/
FLImageViewer::FLImageViewer( QWidget *parent, const char *name,  WFlags fl )
    : QWidget( parent, name, fl | Qt::WDestructiveClose | Qt::WType_Dialog | Qt::WShowModal | Qt::WStyle_Maximize | Qt::WStyle_SysMenu ),
    conversion_flags( PreferDither ),
    helpmsg( 0 ) {
  pickx = -1;
  picky = -1;
  clickx = -1;
  clicky = -1;
  alloc_context = 0;

  menubar = new QMenuBar( this );
  menubar->setSeparator( QMenuBar::InWindowsStyle );

  QStrList fmt = QImage::outputFormats();
  saveimage = new QPopupMenu( menubar );
  savepixmap = new QPopupMenu( menubar );
  for ( const char* f = fmt.first(); f; f = fmt.next() ) {
    saveimage->insertItem( f );
    savepixmap->insertItem( f );
  }
  connect( saveimage, SIGNAL( activated( int ) ), this, SLOT( saveImage( int ) ) );
  connect( savepixmap, SIGNAL( activated( int ) ), this, SLOT( savePixmap( int ) ) );

  file = new QPopupMenu( menubar );
  menubar->insertItem( tr( "&Archivo" ), file );
  //file->insertItem( "&New window", this,  SLOT(newWindow()), CTRL+Key_N );
  file->insertItem( tr( "&Abrir..." ), this,  SLOT( openFile() ), CTRL + Key_O );
  si = file->insertItem( tr( "Guardar imagen" ), saveimage );
  sp = file->insertItem( tr( "Guardar pixmap" ), savepixmap );
  //file->insertSeparator();
  //file->insertItem( "E&xit", qApp,  SLOT(quit()), CTRL+Key_Q );

  edit =  new QPopupMenu( menubar );
  menubar->insertItem( tr( "&Edición" ), edit );
  edit->insertItem( tr( "&Copiar" ), this, SLOT( copy() ), CTRL + Key_C );
  edit->insertItem( tr( "&Pegar" ), this, SLOT( paste() ), CTRL + Key_V );
  edit->insertSeparator();
  edit->insertItem( tr( "Volteo &Horizontal" ), this, SLOT( hFlip() ), ALT + Key_H );
  edit->insertItem( tr( "Volteo &Vertical" ), this, SLOT( vFlip() ), ALT + Key_V );
  edit->insertItem( tr( "&Rotar 180" ), this, SLOT( rot180() ), ALT + Key_R );
  edit->insertSeparator();
  //edit->insertItem("&Text...", this, SLOT(editText()));
  //edit->insertSeparator();
  t1 = edit->insertItem( tr( "Convertir a &1 bit" ), this, SLOT( to1Bit() ) );
  t8 = edit->insertItem( tr( "Convertir a &8 bit" ), this, SLOT( to8Bit() ) );
  t32 = edit->insertItem( tr( "Convertir a &32 bit" ), this, SLOT( to32Bit() ) );

  options =  new QPopupMenu( menubar );
  menubar->insertItem( tr( "&Opciones" ), options );
  ac = options->insertItem( "AutoColor" );
  co = options->insertItem( "ColorOnly" );
  mo = options->insertItem( "MonoOnly" );
  options->insertSeparator();
  fd = options->insertItem( "DiffuseDither" );
  bd = options->insertItem( "OrderedDither" );
  td = options->insertItem( "ThresholdDither" );
  options->insertSeparator();
  ta = options->insertItem( "ThresholdAlphaDither" );
  ba = options->insertItem( "OrderedAlphaDither" );
  fa = options->insertItem( "DiffuseAlphaDither" );
  options->insertSeparator();
  ad = options->insertItem( "PreferDither" );
  dd = options->insertItem( "AvoidDither" );
  options->insertSeparator();
  ss = options->insertItem( tr( "Escalado suavizado" ) );
  cc = options->insertItem( tr( "Usar contexto de color" ) );
  if ( QApplication::colorSpec() == QApplication::ManyColor )
    options->setItemEnabled( cc, FALSE );
  options->setCheckable( TRUE );
  setMenuItemFlags();

  //menubar->insertSeparator();

  //QPopupMenu* help = new QPopupMenu( menubar );
  //menubar->insertItem( "&Help", help );
  //help->insertItem( "Help!", this, SLOT(giveHelp()), CTRL+Key_H );

  connect( options, SIGNAL( activated( int ) ), this, SLOT( doOption( int ) ) );

  status = new QLabel( this );
  status->setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
  status->setFixedHeight( fontMetrics().height() + 4 );

  setMouseTracking( TRUE );
}