本文整理汇总了C++中Fl_Image::width方法的典型用法代码示例。如果您正苦于以下问题:C++ Fl_Image::width方法的具体用法?C++ Fl_Image::width怎么用?C++ Fl_Image::width使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fl_Image
的用法示例。
在下文中一共展示了Fl_Image::width方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw
void draw() {
if(!(damage()&FL_DAMAGE_ALL)) return;
int X=0,Y=0,W=w(),H=h();
box()->inset(X,Y,W,H);
if(image()) {
draw_frame();
fl_push_clip(X,Y,W,H);
Fl_Image *im = image();
W=im->width();
H=im->height();
int pbw = w() - 10;
int pbh = h() - 10;
if(W > pbw || H > pbh) {
W = pbw;
H = W * im->height() / im->width();
if(H > pbh) {
H = pbh;
W = H * im->width() / im->height();
}
}
X=(w()/2)-W/2;
Y=(h()/2)-H/2;
if(X<5) X=5;
if(Y<5) Y=5;
im->mask_type(MASK_NONE);
im->draw(X,Y,W,H,FL_ALIGN_SCALE);
fl_clip_out(X,Y,W,H);
X=0,Y=0,W=w(),H=h();
box()->inset(X,Y,W,H);
fl_color(color());
fl_rectf(X,Y,W,H);
fl_pop_clip();
} else {
draw_box();
if(w()<=120) label_size(8);
if(w()>120) label_size(10);
if(w()>180) label_size(12);
if(w()>250) label_size(14);
if(label()[0]=='?'&&label()[1]=='\0') label_size(100);
draw_label(X, Y, W, H, align());
}
}
示例2: bg_image_input
void bg_image_input(Fl_Input *w, void *d)
{
changed=true;
Fl_String val(w->value());
filename = fl_file_expand(val);
if(mini_wpaper) { delete mini_wpaper; mini_wpaper=0; }
if(mini_image) { delete mini_image; mini_image=0; }
Fl_Image *im = Fl_Image::read(filename);
if(im) {
im->system_convert();
float scalew = (float)mini_image_box->w()/(float)desktop->w();
float scaleh = (float)mini_image_box->h()/(float)desktop->h();
mini_image = im->scale(int(im->width()*scalew), int(im->height()*scaleh));
delete im;
}
if(mini_image) {
mini_wpaper = make_image(color, mini_image,
mini_image_box->w(), mini_image_box->h(),
mode, opacity);
mini_image_box->image(mini_wpaper);
} else {
mini_image_box->image(0);
}
image_input->value(filename);
image_input->redraw();
mini_image_box->redraw();
}
示例3: desktop_properties
void desktop_properties(Fl_Widget *, void *arg)
{
if(!shown) {
make_desktop_properties();
shown = true;
}
mode = desktop->bg_mode;
color = desktop->bg_color;
opacity = desktop->bg_opacity;
use = desktop->bg_use;
filename = desktop->bg_filename;
if(bg_prop_window->visible()) {
bg_prop_window->show();
return;
}
if(mini_image) { delete mini_image; mini_image=0; }
if(mini_wpaper){ delete mini_wpaper; mini_wpaper=0;}
color_button->selection_color(color);
mini_image_box->color(color);
opacity_slider->value(opacity);
mode_choice->value(mode);
use_button->value(use);
image_input->value(filename);
if(!desktop->bg_filename.empty())
{
Fl_Image *im = Fl_Image::read(desktop->bg_filename);
if(im) {
im->system_convert();
float scalew = (float)mini_image_box->w()/(float)desktop->w();
float scaleh = (float)mini_image_box->h()/(float)desktop->h();
mini_image = im->scale(int(im->width()*scalew), int(im->height()*scaleh));
delete im;
}
}
if(mini_image) {
mini_wpaper = make_image(color, mini_image,
mini_image_box->w(), mini_image_box->h(),
mode, opacity);
mini_image_box->image(mini_wpaper);
} else
mini_image_box->image(0);
if(use)
bg_image_group->activate();
else {
bg_image_group->deactivate();
mini_image_box->image(0);
}
bg_prop_window->show();
}
示例4: create
MovableIcon::MovableIcon(Icon *i)
: Fl_Window(desktop->x()+i->x(), desktop->y()+i->y(), i->w(), i->h())
{
icon = i;
set_override();
create();
Fl_Image *im = i->icon_im;
if(im)
{
Pixmap mask = im->create_mask(im->width(), im->height());
XShapeCombineMask(fl_display, fl_xid(this), ShapeBounding, 0, 0, mask, ShapeSet);
align(FL_ALIGN_INSIDE);
image(im);
}
}
示例5: icon
MovableIcon::MovableIcon(Icon* i) : Fl_Window(i->x(), i->y(), i->w(), i->h()), icon(i)
{
assert(icon != NULL);
set_override();
create();
Fl_Image* img = icon->icon_image();
if(img)
{
#ifdef SHAPE
Pixmap mask = img->create_mask(img->width(), img->height());
XShapeCombineMask(fl_display, fl_xid(this), ShapeBounding, 0, 0, mask, ShapeSet);
#endif
align(FL_ALIGN_INSIDE);
image(img);
}
}
示例6: bg_image_browse
void bg_image_browse(Fl_Button *w, void *d)
{
changed=true;
fc_initial_preview = true;
const char *f=fl_select_file(image_input->value(),
_("All Files, *,"
"Png Images, *.png,"
"Xpm Images, *.xpm,"
"Jpeg Images, *.{jpg|jpeg},"
"Gif Images, *.gif,"
"Bmp Images, *.bmp"),
_("Choose wallpaper:")
);
if(f) {
if(mini_wpaper) { delete mini_wpaper; mini_wpaper=0; }
if(mini_image) { delete mini_image; mini_image=0; }
filename = f;
Fl_Image *im = Fl_Image::read(f);
if(im) {
im->system_convert();
float scalew = (float)mini_image_box->w()/(float)desktop->w();
float scaleh = (float)mini_image_box->h()/(float)desktop->h();
mini_image = im->scale(int(im->width()*scalew), int(im->height()*scaleh));
delete im;
}
if(mini_image) {
mini_wpaper = make_image(color, mini_image,
mini_image_box->w(), mini_image_box->h(),
mode, opacity);
mini_image_box->image(mini_wpaper);
} else
mini_image_box->image(0);
image_input->value(filename);
image_input->redraw();
mini_image_box->redraw();
delete []f;
}
}
示例7:
Fl_Image *make_ball(int radius)
{
uint8 trans, alphamask;
int range, addition;
int xdist, ydist;
uint16 x, y;
uint16 skip;
uint32 pixel;
Fl_Image *light;
#ifdef GENERATE_16BIT
uint16 *buf;
/* Create a 16 (4/4/4/4) bpp square with a full 4-bit alpha channel */
/* Note: this isn't any faster than a 32 bit alpha surface */
alphamask = 0x0000000F;
light = new Fl_Image(2*radius, 2*radius, 16, 0, true,
0x0000F000, 0x00000F00, 0x000000F0, alphamask);
#else
uint32 *buf;
/* Create a 32 (8/8/8/8) bpp square with a full 8-bit alpha channel */
alphamask = 0x000000FF;
light = new Fl_Image(2*radius, 2*radius, 32, 0, true,
0xFF000000, 0x00FF0000, 0x0000FF00, alphamask);
#endif
/* Fill with a light yellow-orange color */
skip = light->pitch()-(light->width()*light->format()->bytespp);
#ifdef GENERATE_16BIT
buf = (uint16 *)light->data();
#else
buf = (uint32 *)light->data();
#endif
/* Get a tranparent pixel value - we'll add alpha later */
pixel = light->format()->map_rgba(0xFF, 0xDD, 0x88, 0);
for ( y=0; y<light->height(); ++y ) {
for ( x=0; x<light->width(); ++x ) {
*buf++ = pixel;
}
buf += skip; /* Almost always 0, but just in case... */
}
/* Calculate alpha values for the surface. */
#ifdef GENERATE_16BIT
buf = (uint16 *)light->data();
#else
buf = (uint32 *)light->data();
#endif
for ( y=0; y<light->height(); ++y ) {
for ( x=0; x<light->width(); ++x ) {
/* Slow distance formula (from center of light) */
xdist = x-(light->width()/2);
ydist = y-(light->height()/2);
range = (int)sqrt(xdist*xdist+ydist*ydist);
/* Scale distance to range of transparency (0-255) */
if ( range > radius ) {
trans = alphamask;
} else {
/* Increasing transparency with distance */
trans = (uint8)((range*alphamask)/radius);
/* Lights are very transparent */
addition = (alphamask+1)/16;
if ( (int)trans+addition > alphamask ) {
trans = alphamask;
} else {
trans += addition;
}
}
/* We set the alpha component as the right N bits */
*buf++ |= (255-trans);
}
buf += skip; /* Almost always 0, but just in case... */
}
return light;
}