Release Pandora Image Viewer


Would showing ... let's say 2x3 thumbnails on a black background with ability to quickly select one count as a GUI already? ;) :p

I would have thought that there already is something available to simply rotate an image, but since there isn't ...

About the buttons: if the D-Pad will be used for previous/next, maybe the shoulder-buttons could be used to skip 5 or 10 images in either direction? Or have the shoulder-buttons for first/last and skip on the D-Pad up/down. Just some way to browse through the images a bit faster.
 
Yes, filenames with spaces will be fixed in the next update.

Rotation: I'm hoping notaz will make this trivial for me by making the hardware rotation usable through SDL.
Good stuff.
Navigation with dpad: OK, but then the dpad can no longer be used for panning. There's already the two nubs for that though, so maybe that's not an issue. What would make most sense? left=previous, right=next, up=first, down=last or something like that? (that would free up A and B for rotation when rotation gets implemented)
Yeah, sounds good.
The disk icon: I could do that, but I don't really see the point - the user should not have to care about when it is preloading. You can just check the SD led too.
I was in a folder that I was only stuck showing 2 images when pressing A and B, despite there being more photos in the folder, I assumed this was down to not letting me advance until it loaded the next picture. I could be wrong. I'll try it again after your next update
The application does go to fullscreen immediately, before it starts loading the first image. You get a black screen before the first image is shown.
Ah okay, I could be confusing my loads with attempting my half marathon photos which didn't actually work, I'll try this again after the update

Might be worth, having an image in the PND with all the keyboard shortcuts, then assign the Select (Ctrl) button to display that image (pressing again to revert to the chosen directory's images). Sort of like a help screen without needing any additional code. If you made the image 800x480 too, it'd look like a UI :)

Cheers
 
Thumbnails: no, I wouldn't count that as a GUI :) ... I'll do that at some point, but I'm still thinking about what would be the best way to implement that. I'll want to have some kind of persistent caching, but other viewers are already doing that so maybe I can reuse their thumbnails instead of generating my own. That still leaves the problem of how to get the thumbnails if they're not there already.

I'd want more thumbs on the screen than just 2x3 though.

Rotation: there are two aspects to this, displaying rotated images, and saving them. To do the display rotation, I'm waiting for notaz to add that to SDL - I could do it in software, but it would be faster and easier in hardware. Saving rotated images (across all those supported image formats) is something else; I'll probably end up including a copy of ImageMagick's convert or something to implement that.

The help screen: yes, that is exactly how I want to do it. I just need to draw that image :)

By the way, if someone feels like making a nice icon for this, feel free to send me your suggestions!
 
One more question which may or may not be a feature request:

Would it be possible to use one of the nubs to do real-time zoom like we see on tablets or smartphones? Not sure it's possible with the way you designed the view.

One nub for the scrolling and one nub for the zoom level would make a lot of sense to me, especially seeing how fast is your viewer.
 
I cannot really do "smooth zooming" with this approach, because changing the zoom level requires re-initializing the screen resolution which takes some time and briefly blanks the screen. So that would be flickering and rather low-fps.

To get smooth zooming you would have to do the scaling on the GPU (or maybe on the DSP) and keep the screen resolution constant. I wouldn't know how to get started on something like that though.

I could add more fine-grained zoom levels though, if someone wants that.
 
Instead of deleting pictures from the card used in my camera I'd like to be able to copy the files to different folders. Like selecting the source directory and then two different destinations which are then mapped to two keys. Then after browsing my source folder an marking the pictures with either key PIV will copy them to the respective destination folders. Similar to ekianjos request but with more destination directories.


Is that possible?


A note on rotating in hardware: Does a rotated picture fit the screenheight automatically?
 
@_wb_ out of interest, how does your current method compare to loading the image into a GL texture and displaying that? Obviously with OpenGL performing rotate/scale is free/instant and can use linear filtering instantly also if desired. There is obviously no need to resize the frame buffer, you can just draw the GL texture bigger than the screen or smaller or whatever you like. I'm sure you are fully aware of how GL works, so my question is why are you not doing this? It isn't a loaded question, I am just curious as to the reasoning.
 
@_wb_ out of interest, how does your current method compare to loading the image into a GL texture and displaying that? Obviously with OpenGL performing rotate/scale is free/instant and can use linear filtering instantly also if desired. There is obviously no need to resize the frame buffer, you can just draw the GL texture bigger than the screen or smaller or whatever you like. I'm sure you are fully aware of how GL works, so my question is why are you not doing this? It isn't a loaded question, I am just curious as to the reasoning.
GL_MAX_TEXTURE_SIZE is 2048 on the pandora ... that might be a reason. but just guessing :)
 
Last edited by a moderator:
@crow_riot ah, I didn't think of that, although that is of course relatively trivial to workaround, I am guessing there maybe other reasons.
The main reason why I don't use the GPU is because I'm not familiar with GL coding, so I would have to spend some time learning some stuff. It's probably a good idea though. Feel free to try it!

I would expect the quality of the hardware scaler to be better than that of the GPU, but I don't really have a clue so I don't know if that's a good reason to use my approach.
 
I found another version of the "closing when loading a directory/image containing spaces". Its where it closes when loading a directory/image that contains brackets/parantheses.
 
Just loaded the latest build: No problem with filenames containing brackets or parantheses.
 
Here's the .out after it just closed before showing the images in a folder:

=======================================================================================

PND             : /media/PANDORA-SD1/pandora/apps/piv.pnd
PND_FSTYPE      : Squashfs
APPDATADIR      : /media/PANDORA-SD1/pandora/appdata/piv
APPDD_FSTYPE    : vfat
PND_CPUSPEED    : <unset>
EXENAME         : run
ARGUMENTS       : <unset>
=======================================================================================
[ START ]--- Mount the PND ----------
Mounting : mount -t squashfs -o ro "/dev/loop2" "/mnt/utmp/piv"
Mounting the Union FS : mount -t aufs -o exec,noplink,dirs="/media/PANDORA-SD1/pandora/appdata/piv=rw+nolwh":"/mnt/pnd/piv=rr" none "/mnt/utmp/piv"
[sUCCESS]--- Mount the PND ----------
[ START ]--- Starting the application ( run  ) ----------
./run: line 8: [: too many arguments
args*: /media/PANDORA-SD1/pandora/doujins/(Futaket 9) [behind Moon (Q)] YAMATO2199 Alternative/*
args@: /media/PANDORA-SD1/pandora/doujins/(Futaket 9) [behind Moon (Q)] YAMATO2199 Alternative/*
No images selected... aborting.

Scanning for images, 7 possible

real    0m0.024s
user    0m0.000s
sys    0m0.016s
cat: /tmp/piv_wb_deletion: No such file or directory
No files marked for deletion
[sUCCESS]--- Starting the application ( run  ) ----------
[ START ]--- Restoring the frame buffer status ----------
[sUCCESS]--- Restoring the frame buffer status ----------
[ START ]--- uMount the PND ----------
[ START ]--- Waiting the Union to be available ----------
[sUCCESS]--- Waiting the Union to be available ----------
auplink:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for device
rmdir: failed to remove `/mnt/utmp/piv': Device or resource busy
[ START ]--- Waiting the PND mount dir to be free ----------
[sUCCESS]--- Waiting the PND mount dir to be free ----------
cleanup done
[sUCCESS]--- uMount the PND ----------
=======================================================================================
Return code is : 2

I also have some suggestions for it:

1. It should be made to be able to accept a directory as a parameter so that way its .out won't get cluttered with filenames.

2. Sorting the images in the dialog box should have them be displayed in that order.

3. Scrolling an image that is zoomed in when a huge number of them are loaded should be made faster.
 
Last edited by a moderator:
@_wb_: ah, okay, makes sense! No complaints, it is great you have made this! I would find making the GL version rather interesting up until the point that is displays images, but then as soon as all the work for making it more useful comes in I think I'd not keep much interest. Never say never though ;)
 
_wb_: Any thoughts regarding my suggestions? (Except for #3 since it seemed to resolve itself somehow)
 
I've noticed that when zooming in or out you can find yourself looking at an entirely different section of the picture.    Is there any chance of making it so that the centre of the viewing area is maintained? (or at least remains in the new viewing area if it's too close to an edge when zooming out)

- Neelix
 
I've noticed that when zooming in or out you can find yourself looking at an entirely different section of the picture.    Is there any chance of making it so that the centre of the viewing area is maintained? (or at least remains in the new viewing area if it's too close to an edge when zooming out)
This will be fixed in the next update. Fixing the nub speed thing broke the correct offsets after zooming.

1. It should be made to be able to accept a directory as a parameter so that way its .out won't get cluttered with filenames.

2. Sorting the images in the dialog box should have them be displayed in that order.

3. Scrolling an image that is zoomed in when a huge number of them are loaded should be made faster.
1. I don't really care about cluttering the .out file (it is not really part of the normal user experience), but I'll tune down the verbosity a bit.

2. This is a matter of improving the zenity script that calls my viewer. Now it just gets a dir name from the dialog and calls my viewer with <directory>/* as an argument, and it lets shell wildcard expansion do its thing. If you know a way to get the sort order and apply it, I'll change the script. I'm now focusing on the viewer itself though.

3. Is this OK now or is there still an issue?
 
1. That would be good.

2. There is the ls -lt command that can be used via Terminal.

3. Its OK now.

Btw. what about the issue that is shown in my .out that I recently posted? (the one where it contains a "too many args" error).
 
1. That would be good.

2. There is the ls -lt command that can be used via Terminal.

3. Its OK now.

Btw. what about the issue that is shown in my .out that I recently posted? (the one where it contains a "too many args" error).
That issue should already have been solved in the version currently on the repo. It is caused by the dirname containing square brackets - in the version currently on the repo there should be no more problem with spaces, brackets, square brackets etc in filenames.

In the next version, the support for huge JPEGs will be improved further. For example, you'll be able to view (and fit to screen) the full-resolution version of this 29,566 × 14,321 pixels, 91MB JPEG file... at least to a zoom level of 1/4, it does not have enough memory to load the 1/2 zoom level, let alone the 1:1 one, but instead of crashing or getting stuck, it will now degrade gracefully and just show you zooms based on the best zoom level it can load.
 
Back
Top