Added sliding scale for slideshow speed adjustement.
Note: Use slowest (leftmost) speed setting to disable automatic slide advancement.
This commit is contained in:
parent
20f1da1afd
commit
53ce047918
4 changed files with 142 additions and 42 deletions
|
|
@ -13,11 +13,17 @@ $Id$
|
|||
* Interface improvements:
|
||||
-----------------------
|
||||
* New slideshow tool! ("Slides", available in "Open" dialog.)
|
||||
Select each image to play, in the order you want them, then click "Play".
|
||||
Select each image to play, in the order you want them, and use the
|
||||
sliding scale to adjust speed, then click "Play" to begin the show.
|
||||
|
||||
Space, Enter, Right and mouseclicks advance manually.
|
||||
Left goes to the previous image.
|
||||
Escape or "Back" button at lower right ends playback.
|
||||
+ The "Next" button and [Space], [Enter] and [Right Arrow] keys
|
||||
advance to the next slide manually. (Clicking anywhere in the image
|
||||
advances, as well.)
|
||||
+ The [Left Arrow] key goes to the previous slide.
|
||||
+ The "Back" button and [Escape] ends playback.
|
||||
|
||||
Note: Use slowest (leftmost) speed setting to disable automatic
|
||||
slide advancement.
|
||||
|
||||
* Modified "Text" tool so that it correctly handles the 16-bit unicode
|
||||
characters that SDL sends.
|
||||
|
|
|
|||
|
|
@ -425,7 +425,7 @@ Available Tools
|
|||
picture. (You will be asked to confirm.)
|
||||
|
||||
* Click the blue "Slides" (slide projector) button at
|
||||
the lower left to go to slideshow mode. See "Slides,
|
||||
the lower left to go to slideshow mode. See "Slides",
|
||||
below, for details.
|
||||
|
||||
* Or click the red "Back" arrow button at the lower
|
||||
|
|
@ -600,25 +600,33 @@ Available Tools
|
|||
|
||||
Click each of the images you wish to display in a
|
||||
slideshow-style presentation, one by one. A digit will
|
||||
appear over each image, letting you know which order it will
|
||||
be displayed in.
|
||||
appear over each image, letting you know in which order they
|
||||
will be displayed.
|
||||
|
||||
Click a selected image to unselect it (take it out of your
|
||||
slideshow). Any images you had clicked after it will go up
|
||||
one in the slideshow order.
|
||||
You can click a selected image to unselect it (take it out
|
||||
of your slideshow).
|
||||
|
||||
Click the "Play" icon to begin the slideshow. Note: If you
|
||||
didn't select ANY images, then ALL images will be played in
|
||||
the slideshow. Click "Back" to return to the "Open" dialog.
|
||||
A sliding scale at the lower left of the screen (next to the
|
||||
"Play" button) can be used to adjust the speed of the
|
||||
slideshow, from slowest to fastest. Choose the leftmost
|
||||
setting to disable automatic advancement -- you will need to
|
||||
press a key or click to go to the next slide (see below).
|
||||
|
||||
When you're ready, click the "Play" button to begin the
|
||||
slideshow. (Note: If you hadn't selected ANY images, then
|
||||
ALL images will be played in the slideshow.)
|
||||
|
||||
During the slideshow, press [Space], [Enter] or [Return] or
|
||||
the [Right Arrow], or click anywhere in the picture, to
|
||||
manually advance to the next slide. Press [Left] to go back
|
||||
to the previous slide.
|
||||
the [Right Arrow], or click the "Next" button at the lower
|
||||
left, to manually advance to the next slide. Press [Left] to
|
||||
go back to the previous slide.
|
||||
|
||||
Press [Escape] or click the "Back" button at the lower right
|
||||
to exit the slideshow and return to the image list, where
|
||||
you may change which images to show in the slideshow.
|
||||
Press [Escape], or click the "Back" button at the lower
|
||||
right, to exit the slideshow and return to the slideshow
|
||||
image selection screen.
|
||||
|
||||
Click "Back" in the slideshow image selection screen to
|
||||
return to the "Open" dialog.
|
||||
|
||||
Quit
|
||||
|
||||
|
|
|
|||
|
|
@ -624,7 +624,7 @@ New Breed Software</p>
|
|||
align=right>
|
||||
|
||||
<p>Click the blue "Slides" (slide projector) button at the lower
|
||||
left to go to slideshow mode. See "<a href="#slides">Slides</a>,
|
||||
left to go to slideshow mode. See "<a href="#slides">Slides</a>",
|
||||
below, for details.</p>
|
||||
|
||||
<br clear=all>
|
||||
|
|
@ -843,26 +843,32 @@ New Breed Software</p>
|
|||
|
||||
<p>Click each of the images you wish to display in a slideshow-style
|
||||
presentation, one by one. A digit will appear over each image,
|
||||
letting you know which order it will be displayed in.</p>
|
||||
letting you know in which order they will be displayed.</p>
|
||||
|
||||
<p>Click a selected image to unselect it (take it out of your
|
||||
slideshow). Any images you had clicked after it will go up one in
|
||||
the slideshow order.</p>
|
||||
<p>You can click a selected image to unselect it (take it out of your
|
||||
slideshow).</p>
|
||||
|
||||
<p>Click the "Play" icon to begin the slideshow. Note: If you didn't
|
||||
select ANY images, then ALL images will be played in the slideshow.
|
||||
Click "Back" to return to the "Open" dialog.</p>
|
||||
<p>A sliding scale at the lower left of the screen (next to the "Play"
|
||||
button) can be used to adjust the speed of the slideshow, from slowest
|
||||
to fastest. Choose the leftmost setting to disable automatic
|
||||
advancement — you will need to press a key or click to go to
|
||||
the next slide (see below).</p>
|
||||
|
||||
<p>When you're ready, click the "Play" button to begin the slideshow.
|
||||
(Note: If you hadn't selected ANY images, then ALL images will be
|
||||
played in the slideshow.)</p>
|
||||
|
||||
<p>During the slideshow, press <b>[Space]</b>, <b>[Enter]</b> or
|
||||
<b>[Return]</b> or the <b>[Right Arrow]</b>, or click anywhere
|
||||
in the picture, to manually advance to the next slide.
|
||||
<b>[Return]</b> or the <b>[Right Arrow]</b>, or click the "Next"
|
||||
button at the lower left, to manually advance to the next slide.
|
||||
Press <b>[Left]</b> to go back to the previous slide.</p>
|
||||
|
||||
<p>Press <b>[Escape]</b> or click the "Back" button at the
|
||||
lower right to exit the slideshow and return to the image list,
|
||||
where you may change which images to show in the slideshow.</p>
|
||||
<p>Press <b>[Escape]</b>, or click the "Back" button at the
|
||||
lower right, to exit the slideshow and return to the slideshow
|
||||
image selection screen.</p>
|
||||
|
||||
<!-- FIXME: Add playback speed control! -->
|
||||
<p>Click "Back" in the slideshow image selection screen to return to
|
||||
the "Open" dialog.</p>
|
||||
|
||||
<br clear=all>
|
||||
</dd>
|
||||
|
|
|
|||
|
|
@ -953,7 +953,8 @@ static SDL_Surface **img_brushes;
|
|||
static SDL_Surface *img_shapes[NUM_SHAPES], *img_shape_names[NUM_SHAPES];
|
||||
static SDL_Surface *img_magics[NUM_MAGICS], *img_magic_names[NUM_MAGICS];
|
||||
static SDL_Surface *img_openlabels_open, *img_openlabels_erase,
|
||||
*img_openlabels_slideshow, *img_openlabels_back, *img_openlabels_play;
|
||||
*img_openlabels_slideshow, *img_openlabels_back, *img_openlabels_play,
|
||||
*img_openlabels_next;
|
||||
|
||||
static SDL_Surface *img_tux[NUM_TIP_TUX];
|
||||
|
||||
|
|
@ -6941,6 +6942,7 @@ static void create_button_labels(void)
|
|||
img_openlabels_erase = do_render_button_label(gettext_noop("Erase"));
|
||||
img_openlabels_slideshow = do_render_button_label(gettext_noop("Slides"));
|
||||
img_openlabels_back = do_render_button_label(gettext_noop("Back"));
|
||||
img_openlabels_next = do_render_button_label(gettext_noop("Next"));
|
||||
img_openlabels_play = do_render_button_label(gettext_noop("Play"));
|
||||
}
|
||||
|
||||
|
|
@ -10429,6 +10431,7 @@ static void cleanup(void)
|
|||
free_surface(&img_openlabels_slideshow);
|
||||
free_surface(&img_openlabels_erase);
|
||||
free_surface(&img_openlabels_back);
|
||||
free_surface(&img_openlabels_next);
|
||||
free_surface(&img_openlabels_play);
|
||||
|
||||
free_surface(&img_progress);
|
||||
|
|
@ -12579,6 +12582,10 @@ void do_slideshow(void)
|
|||
SDL_Event event;
|
||||
SDLKey key;
|
||||
char *freeme;
|
||||
int speeds;
|
||||
float x_per, y_per;
|
||||
int xx, yy;
|
||||
SDL_Surface *btn, *blnk;
|
||||
|
||||
do_setcursor(cursor_watch);
|
||||
|
||||
|
|
@ -12973,6 +12980,38 @@ void do_slideshow(void)
|
|||
dest.y = (48 * 7 + 40 + HEIGHTOFFSET) - img_openlabels_back->h;
|
||||
SDL_BlitSurface(img_openlabels_back, NULL, screen, &dest);
|
||||
|
||||
|
||||
/* Speed control: */
|
||||
|
||||
speeds = 10;
|
||||
x_per = 96.0 / speeds;
|
||||
y_per = 48.0 / speeds;
|
||||
|
||||
for (i = 0; i < speeds; i++)
|
||||
{
|
||||
xx = ceil(x_per);
|
||||
yy = ceil(y_per * i);
|
||||
|
||||
if (i <= speed)
|
||||
btn = thumbnail(img_btn_down, xx, yy, 0);
|
||||
else
|
||||
btn = thumbnail(img_btn_up, xx, yy, 0);
|
||||
|
||||
blnk = thumbnail(img_btn_off, xx, 48 - yy, 0);
|
||||
|
||||
/* FIXME: Check for NULL! */
|
||||
|
||||
dest.x = 96 + 48 + (i * x_per);
|
||||
dest.y = (48 * 7 + 40 + HEIGHTOFFSET) - 48;
|
||||
SDL_BlitSurface(blnk, NULL, screen, &dest);
|
||||
|
||||
dest.x = 96 + 48 + (i * x_per);
|
||||
dest.y = (48 * 7 + 40 + HEIGHTOFFSET) - (y_per * i);
|
||||
SDL_BlitSurface(btn, NULL, screen, &dest);
|
||||
|
||||
SDL_FreeSurface(btn);
|
||||
SDL_FreeSurface(blnk);
|
||||
}
|
||||
|
||||
SDL_Flip(screen);
|
||||
|
||||
|
|
@ -13140,6 +13179,34 @@ void do_slideshow(void)
|
|||
|
||||
update_list = 1;
|
||||
}
|
||||
else if (event.button.x >= 96 + 48 && event.button.x < 96 + 48 + 96 &&
|
||||
event.button.y >= (48 * 7 + 40 + HEIGHTOFFSET) - 48 &&
|
||||
event.button.y < (48 * 7 + 40 + HEIGHTOFFSET))
|
||||
{
|
||||
/* Speed slider */
|
||||
|
||||
int old_speed, control_sound, click_x;
|
||||
|
||||
old_speed = speed;
|
||||
|
||||
click_x = event.button.x - 96 - 48;
|
||||
speed = ((10 * click_x) / 96);
|
||||
|
||||
control_sound = -1;
|
||||
|
||||
if (speed < old_speed)
|
||||
control_sound = SND_SHRINK;
|
||||
else if (speed > old_speed)
|
||||
control_sound = SND_GROW;
|
||||
|
||||
if (control_sound != -1)
|
||||
{
|
||||
playsound(screen, 0, control_sound, 0, SNDPOS_CENTER,
|
||||
SNDDIST_NEAR);
|
||||
|
||||
update_list = 1;
|
||||
}
|
||||
}
|
||||
else if (event.button.x >= (WINDOW_WIDTH - 96 - 48) &&
|
||||
event.button.x < (WINDOW_WIDTH - 96) &&
|
||||
event.button.y >= (48 * 7 + 40 + HEIGHTOFFSET) - 48 &&
|
||||
|
|
@ -13204,11 +13271,9 @@ void do_slideshow(void)
|
|||
|
||||
do_setcursor(cursor_down);
|
||||
}
|
||||
else if (((event.button.x >= 96 && event.button.x < 96 + 48) ||
|
||||
else if (((event.button.x >= 96 && event.button.x < 96 + 48 + 96) ||
|
||||
(event.button.x >= (WINDOW_WIDTH - 96 - 48) &&
|
||||
event.button.x < (WINDOW_WIDTH - 96)) ||
|
||||
(event.button.x >= (WINDOW_WIDTH - 96 - 48 - 48) &&
|
||||
event.button.x < (WINDOW_WIDTH - 48 - 96))) &&
|
||||
event.button.x < (WINDOW_WIDTH - 96))) &&
|
||||
event.button.y >= (48 * 7 + 40 + HEIGHTOFFSET) - 48 &&
|
||||
event.button.y < (48 * 7 + 40 + HEIGHTOFFSET))
|
||||
{
|
||||
|
|
@ -13343,6 +13408,17 @@ void play_slideshow(int * selected, int num_selected, char * dirname,
|
|||
SDL_BlitSurface(img_openlabels_back, NULL, screen, &dest);
|
||||
|
||||
|
||||
/* "Next" button: */
|
||||
|
||||
dest.x = 0;
|
||||
dest.y = screen->h - 48;
|
||||
SDL_BlitSurface(img_play, NULL, screen, &dest);
|
||||
|
||||
dest.x = (48 - img_openlabels_next->w) / 2;
|
||||
dest.y = screen->h - img_openlabels_next->h;
|
||||
SDL_BlitSurface(img_openlabels_next, NULL, screen, &dest);
|
||||
|
||||
|
||||
SDL_Flip(screen);
|
||||
|
||||
|
||||
|
|
@ -13421,10 +13497,11 @@ void play_slideshow(int * selected, int num_selected, char * dirname,
|
|||
{
|
||||
/* Deal with mouse pointer shape! */
|
||||
|
||||
if (event.button.x >= screen->w - 48 &&
|
||||
if ((event.button.x >= screen->w - 48 ||
|
||||
event.button.x < 48) &&
|
||||
event.button.y >= screen->h - 48)
|
||||
{
|
||||
/* Back button */
|
||||
/* Back or Next buttons */
|
||||
|
||||
do_setcursor(cursor_hand);
|
||||
}
|
||||
|
|
@ -13442,8 +13519,11 @@ void play_slideshow(int * selected, int num_selected, char * dirname,
|
|||
|
||||
/* Automatically skip to the next one after time expires: */
|
||||
|
||||
if (SDL_GetTicks() >= last_ticks + speed * 1000)
|
||||
next = 1;
|
||||
if (speed != 0)
|
||||
{
|
||||
if (SDL_GetTicks() >= last_ticks + (10 - speed) * 500)
|
||||
next = 1;
|
||||
}
|
||||
}
|
||||
while (!next);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue