SIV - Simple Image Visualizer
Publicado por Gabriel Duarte Guimarães Costa 18/10/2007
[ Hits: 5.422 ]
Homepage: http://kinuxlinux.org/gabriel_duarte
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).
#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(); }
Produto de duas matrizes alocadas dinamicamente
Shadow Mapping utilizando OpenGL e Cg
Sequência fibonacci com 35 linhas e for
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta