SIV - Simple Image Visualizer
Publicado por Gabriel Duarte Guimarães Costa 18/10/2007
[ Hits: 5.664 ]
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();
}
Pra quem gosta de RPG. Um sistema de lutas.
Decimal, Hexa, Char para Binário
Super Thiagout (Breakout) - O Jogo
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Linux é a solução para o fim do Windows10? (2)
Problemas com Driver NVIDIA (4)
Programa fora de escala na tela do pc (28)
converter algoritmo C++ em C? (1)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)









