SIV - Simple Image Visualizer

Publicado por Gabriel Duarte Guimarães Costa 18/10/2007

[ Hits: 5.434 ]

Homepage: http://kinuxlinux.org/gabriel_duarte

Download siv.cpp




Simples visualizador de imagens .jpg escrito em C++ e Fltk, pequeno, portável, e simples..

Para compilar use:


g++ siv.cpp -o siv -lfltk -lfltk_images -Wall -lXpm -lX11

Para compilar, você precisa dos pacotes de desenvolvimento do X e do Fltk (xorg-dev e fltk-dev).

  



Esconder código-fonte

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Shared_Image.H>
#include <FL/Fl_JPEG_Image.H>
#include <FL/Fl_Box.H>
#include <Fl/Fl_File_Chooser.H>
#include <FL/Fl_Menu_Bar.H>
#include <FL/Fl_Scroll.H>
#include <iostream>
#include <Fl/Fl_Help_View.H>
#include <Fl/filename.H>
#include <X11/xpm.h>
#include "siv.xpm"
#include <FL/x.H>

using namespace std;

Fl_Box   *box=(Fl_Box *)0;

Fl_Window   *win=(Fl_Window *)0;

Fl_Window   *win_about=(Fl_Window *)0;

Fl_JPEG_Image *jpg=(Fl_JPEG_Image *)0;

Fl_Menu_Bar *menu=(Fl_Menu_Bar *)0;

Fl_Scroll *scroll=(Fl_Scroll *)0;

Fl_Help_View *hviewer=(Fl_Help_View *)0;

string label;

void image_load(Fl_Widget *, void*) {
   char *homeuser;
   homeuser=getenv("HOME");
        Fl_File_Chooser chooser(homeuser, "*.jpg, *.JPEG", Fl_File_Chooser::SINGLE,"JPEG Image");
   chooser.show();
   while( chooser.shown() ){ 
      Fl::wait(); 
      }
   if  (chooser.count() > 0){
      string winlabel = "SIV - Simple Image Visualizer - ";
      if (jpg) delete jpg;
                jpg = new Fl_JPEG_Image(chooser.value());
      label = fl_filename_name(chooser.value());
      box->image(jpg);
      box->resize(5 ,menu->h()-5 , jpg->w()+20, jpg->h()+20);
      win->resize(win->x(), win->y(), box->w() + 10, box->h() + 10);
      menu->resize(0, 0,  win->w(), 20);
      scroll->resize(0,20,win->w(), win->h()-20);
      winlabel += label.c_str();   
      box->tooltip(label.c_str());
      win->label(winlabel.c_str());
      box->redraw();
      win->redraw();
      
      }
   else{
      return;
   }
} 

int about_siv(Fl_Widget *, void *){
   win_about = new Fl_Window(350,100, "About SIV");
   hviewer = new Fl_Help_View(0, 20, 350,100, "About:");
   hviewer->value("SIV is an simple image visualizer that was build in C++ using Fltk (http://fltk.org)\n.");
   hviewer->textsize(14);
   hviewer->textcolor(FL_RED);
   win_about->set_modal();
   win_about->end();
        win_about->show();
   return Fl::run();
}
void quit(Fl_Widget*, void*){
 cout << "Exiting..." << endl;
 exit(0);
}



int main(int argc, char *argv[]) {
   fl_register_images();
   fl_open_display();              

   Pixmap p, mask;

   XpmCreatePixmapFromData(fl_display, DefaultRootWindow(fl_display), siv_xpm, &p, &mask, NULL);

   
   Fl::scheme("gtk+");
   win = new Fl_Window(20,20,800,800, "SIV - Simple Image Visualizer");
   {
       menu = new Fl_Menu_Bar(0,0,800,20);
       menu->add("File/Open",   FL_CTRL+'o',image_load);
       menu->add("File/Quit", FL_CTRL+'q', quit);   
       menu->add("Help/About", FL_CTRL+'h',(Fl_Callback*)about_siv);
   }
   {
   scroll = new Fl_Scroll(0,20, 800,780);
   scroll->type();
        {
   box = new Fl_Box(-20,0,800,740);
   }
   scroll->end();
   }
        win->resizable(scroll);
        win->end();
   win->icon((char *)p);
        win->show(argc, argv);   
   win->callback(quit);
   return Fl::run();
}

Scripts recomendados

Integração numérica - Método da Quadratura Gaussiana

Matriz com strings

Informações do kernel

Angelinux Scripts - Palpite para Megasena em C

C join


  

Comentários
[1] Comentário enviado por Nick-us em 04/06/2020 - 09:27h

Não Compila, possue vários erros, e mesmo corrigindo parou agora nesse!

error: ‘siv_xpm’ was not declared in this scope
88 | atePixmapFromData(fl_display, DefaultRootWindow(fl_display), siv_xpm, &p, &mask, NULL);

Acho que sempre antes de criar um artigo é bom testar o código antes de publicar!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts