Home » Eclipse Projects » Nebula » Gallery image loading question
Gallery image loading question [message #61252] |
Fri, 12 December 2008 04:23  |
Eclipse User |
|
|
|
Originally posted by: user.domain.invalid
Hello everyone,
We are currently developping a cataloging system, and we are using the
GalleryViewer.
We are loading a lot of image from the internet so I was wondering if
there was any way I could load the image lazily?
For example when loading a bunch of images into the gallery, i would
like to display first a default image and the tittle of the image. And
then in a thread fetch the image from the internet and replace the
default image with the correct one for each gallery item.
Thank you very much,
Baptiste
|
|
| | | |
Re: Gallery image loading question [message #61539 is a reply to message #61325] |
Wed, 07 January 2009 07:01   |
Eclipse User |
|
|
|
A common API would be great.
I did lazy image loading with Gallery and Table in Sharemedia
www.sf.net/projects/sharemedia.
see org.sharemedia.services.imageservice.*
and org.sharemedia.libraryview.gallery.*
The basic idea is to use :
- SetData event to create the item, but not the image.
- Paint event to create the image if there is none or if the previous
one was disposed
- A class (WidgetImageCache) ensure that the widget does not creat
more than X images, and dispose the oldest ones if necessary.
- When the widget is hidden, the cache cleans all images to release
memory.
The good thing is that this works with all SWT controls with no
additionnal API
On the other side :
- the cache can keep more images than necessary (cache > visible items).
- if the widget can display more items than the cache size (cache <
visible), painting is slow because all images are disposed right after use.
To solve these issues, I only need a way to know how many items are
visible in a control to set the cache size accordingly.
If we work on an API, we have to ensure that the SWT team is ok to
support it in SWT default widgets.
Nicolas
Tom Schindl a écrit :
> Hi,
>
> It is the GridVisibleRangeSupport which you are looking for.
>
> Tom
>
> user@domain.invalid schrieb:
>> Hi Tom,
>>
>> Thank you for your answer,
>>
>> I don't find any feature like that in Gallery. It would be great to have
>> like a commons api.
>> Could you point me where this feature is implementated in the nebula
>> grid? As I went through the grid code from the header_footer but I
>> couldnd manage to find it.
>> So I could have a look at it and try to integrate that in gallery.
>>
>> Thank you
>>
>> Baptiste
>>
>>
>>
>> Tom Schindl wrote:
>>> Hi,
>>>
>>> Well I implemented such a feature for Nebula-Grid (the current
>>> header_footer branch holds this stuff) besides loading images lazily you
>>> also need to dispose them when the image is scrolled out of view else
>>> you'll eating up your resource handles.
>>>
>>> The feature I added to grid is that you can subscribed to the grid and
>>> you get informed about the currently showing cells in the view:
>>>
>>> a) when a cell is scrolled into view you can set an placeholder and span
>>> a background-thread fetching the image restoring it in a temp dir and
>>> replace the placeholder
>>>
>>> b) when a cell is scrolled out of view you can set dipose the resource
>>> and set the image back to the placeholder and next time
>>>
>>> c) when the cell is once more scrolled into view check you local-disk
>>> cache if the image is there load and return it else a)
>>>
>>> I don't know if Gallery has such a feature but if not it would maybe
>>> make sense to work together on a common API both widgets provide to
>>> their users.
>>>
>>> Tom
>>>
>>> user@domain.invalid schrieb:
>>>> Hello everyone,
>>>>
>>>> We are currently developping a cataloging system, and we are using the
>>>> GalleryViewer.
>>>>
>>>> We are loading a lot of image from the internet so I was wondering if
>>>> there was any way I could load the image lazily?
>>>> For example when loading a bunch of images into the gallery, i would
>>>> like to display first a default image and the tittle of the image. And
>>>> then in a thread fetch the image from the internet and replace the
>>>> default image with the correct one for each gallery item.
>>>>
>>>> Thank you very much,
>>>>
>>>> Baptiste
>>>
>
>
|
|
|
Re: Gallery image loading question [message #61557 is a reply to message #61539] |
Wed, 07 January 2009 15:08  |
Eclipse User |
|
|
|
Hi Nicolas,
Nicolas Richeton schrieb:
> A common API would be great.
>
> I did lazy image loading with Gallery and Table in Sharemedia
> www.sf.net/projects/sharemedia.
>
> see org.sharemedia.services.imageservice.*
> and org.sharemedia.libraryview.gallery.*
>
> The basic idea is to use :
> - SetData event to create the item, but not the image.
> - Paint event to create the image if there is none or if the previous
> one was disposed
> - A class (WidgetImageCache) ensure that the widget does not creat
> more than X images, and dispose the oldest ones if necessary.
> - When the widget is hidden, the cache cleans all images to release
> memory.
>
> The good thing is that this works with all SWT controls with no
> additionnal API
>
> On the other side :
> - the cache can keep more images than necessary (cache > visible items).
> - if the widget can display more items than the cache size (cache <
> visible), painting is slow because all images are disposed right after use.
It's maybe not only suiteable for Images, Fonts, ... all types resources
and even Strings can be a memory / handler problem.
>
> To solve these issues, I only need a way to know how many items are
> visible in a control to set the cache size accordingly.
>
> If we work on an API, we have to ensure that the SWT team is ok to
> support it in SWT default widgets.
>
This is impossible for SWT and so the SetData-call back works
differently in SWT as far as I remember (called only once for the
lifetime of a Table/TreeItem [1]).
Tom
[1] http://tom-eclipse-dev.blogspot.com/2007/01/what-items-are-v isible-in-tabletree.html
--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
|
|
|
Re: Gallery image loading question [message #592993 is a reply to message #61252] |
Fri, 12 December 2008 05:13  |
Eclipse User |
|
|
|
Hi,
Well I implemented such a feature for Nebula-Grid (the current
header_footer branch holds this stuff) besides loading images lazily you
also need to dispose them when the image is scrolled out of view else
you'll eating up your resource handles.
The feature I added to grid is that you can subscribed to the grid and
you get informed about the currently showing cells in the view:
a) when a cell is scrolled into view you can set an placeholder and span
a background-thread fetching the image restoring it in a temp dir and
replace the placeholder
b) when a cell is scrolled out of view you can set dipose the resource
and set the image back to the placeholder and next time
c) when the cell is once more scrolled into view check you local-disk
cache if the image is there load and return it else a)
I don't know if Gallery has such a feature but if not it would maybe
make sense to work together on a common API both widgets provide to
their users.
Tom
user@domain.invalid schrieb:
> Hello everyone,
>
> We are currently developping a cataloging system, and we are using the
> GalleryViewer.
>
> We are loading a lot of image from the internet so I was wondering if
> there was any way I could load the image lazily?
> For example when loading a bunch of images into the gallery, i would
> like to display first a default image and the tittle of the image. And
> then in a thread fetch the image from the internet and replace the
> default image with the correct one for each gallery item.
>
> Thank you very much,
>
> Baptiste
--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
|
|
|
Re: Gallery image loading question [message #593006 is a reply to message #61277] |
Sat, 13 December 2008 06:26  |
Eclipse User |
|
|
|
Hi Tom,
Thank you for your answer,
I don't find any feature like that in Gallery. It would be great to have
like a commons api.
Could you point me where this feature is implementated in the nebula
grid? As I went through the grid code from the header_footer but I
couldnd manage to find it.
So I could have a look at it and try to integrate that in gallery.
Thank you
Baptiste
Tom Schindl wrote:
> Hi,
>
> Well I implemented such a feature for Nebula-Grid (the current
> header_footer branch holds this stuff) besides loading images lazily you
> also need to dispose them when the image is scrolled out of view else
> you'll eating up your resource handles.
>
> The feature I added to grid is that you can subscribed to the grid and
> you get informed about the currently showing cells in the view:
>
> a) when a cell is scrolled into view you can set an placeholder and span
> a background-thread fetching the image restoring it in a temp dir and
> replace the placeholder
>
> b) when a cell is scrolled out of view you can set dipose the resource
> and set the image back to the placeholder and next time
>
> c) when the cell is once more scrolled into view check you local-disk
> cache if the image is there load and return it else a)
>
> I don't know if Gallery has such a feature but if not it would maybe
> make sense to work together on a common API both widgets provide to
> their users.
>
> Tom
>
> user@domain.invalid schrieb:
>> Hello everyone,
>>
>> We are currently developping a cataloging system, and we are using the
>> GalleryViewer.
>>
>> We are loading a lot of image from the internet so I was wondering if
>> there was any way I could load the image lazily?
>> For example when loading a bunch of images into the gallery, i would
>> like to display first a default image and the tittle of the image. And
>> then in a thread fetch the image from the internet and replace the
>> default image with the correct one for each gallery item.
>>
>> Thank you very much,
>>
>> Baptiste
>
>
|
|
|
Re: Gallery image loading question [message #593015 is a reply to message #61301] |
Sat, 13 December 2008 09:34  |
Eclipse User |
|
|
|
Hi,
It is the GridVisibleRangeSupport which you are looking for.
Tom
user@domain.invalid schrieb:
> Hi Tom,
>
> Thank you for your answer,
>
> I don't find any feature like that in Gallery. It would be great to have
> like a commons api.
> Could you point me where this feature is implementated in the nebula
> grid? As I went through the grid code from the header_footer but I
> couldnd manage to find it.
> So I could have a look at it and try to integrate that in gallery.
>
> Thank you
>
> Baptiste
>
>
>
> Tom Schindl wrote:
>> Hi,
>>
>> Well I implemented such a feature for Nebula-Grid (the current
>> header_footer branch holds this stuff) besides loading images lazily you
>> also need to dispose them when the image is scrolled out of view else
>> you'll eating up your resource handles.
>>
>> The feature I added to grid is that you can subscribed to the grid and
>> you get informed about the currently showing cells in the view:
>>
>> a) when a cell is scrolled into view you can set an placeholder and span
>> a background-thread fetching the image restoring it in a temp dir and
>> replace the placeholder
>>
>> b) when a cell is scrolled out of view you can set dipose the resource
>> and set the image back to the placeholder and next time
>>
>> c) when the cell is once more scrolled into view check you local-disk
>> cache if the image is there load and return it else a)
>>
>> I don't know if Gallery has such a feature but if not it would maybe
>> make sense to work together on a common API both widgets provide to
>> their users.
>>
>> Tom
>>
>> user@domain.invalid schrieb:
>>> Hello everyone,
>>>
>>> We are currently developping a cataloging system, and we are using the
>>> GalleryViewer.
>>>
>>> We are loading a lot of image from the internet so I was wondering if
>>> there was any way I could load the image lazily?
>>> For example when loading a bunch of images into the gallery, i would
>>> like to display first a default image and the tittle of the image. And
>>> then in a thread fetch the image from the internet and replace the
>>> default image with the correct one for each gallery item.
>>>
>>> Thank you very much,
>>>
>>> Baptiste
>>
>>
--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
|
|
|
Re: Gallery image loading question [message #593102 is a reply to message #61325] |
Wed, 07 January 2009 07:01  |
Eclipse User |
|
|
|
A common API would be great.
I did lazy image loading with Gallery and Table in Sharemedia
www.sf.net/projects/sharemedia.
see org.sharemedia.services.imageservice.*
and org.sharemedia.libraryview.gallery.*
The basic idea is to use :
- SetData event to create the item, but not the image.
- Paint event to create the image if there is none or if the previous
one was disposed
- A class (WidgetImageCache) ensure that the widget does not creat
more than X images, and dispose the oldest ones if necessary.
- When the widget is hidden, the cache cleans all images to release
memory.
The good thing is that this works with all SWT controls with no
additionnal API
On the other side :
- the cache can keep more images than necessary (cache > visible items).
- if the widget can display more items than the cache size (cache <
visible), painting is slow because all images are disposed right after use.
To solve these issues, I only need a way to know how many items are
visible in a control to set the cache size accordingly.
If we work on an API, we have to ensure that the SWT team is ok to
support it in SWT default widgets.
Nicolas
Tom Schindl a écrit :
> Hi,
>
> It is the GridVisibleRangeSupport which you are looking for.
>
> Tom
>
> user@domain.invalid schrieb:
>> Hi Tom,
>>
>> Thank you for your answer,
>>
>> I don't find any feature like that in Gallery. It would be great to have
>> like a commons api.
>> Could you point me where this feature is implementated in the nebula
>> grid? As I went through the grid code from the header_footer but I
>> couldnd manage to find it.
>> So I could have a look at it and try to integrate that in gallery.
>>
>> Thank you
>>
>> Baptiste
>>
>>
>>
>> Tom Schindl wrote:
>>> Hi,
>>>
>>> Well I implemented such a feature for Nebula-Grid (the current
>>> header_footer branch holds this stuff) besides loading images lazily you
>>> also need to dispose them when the image is scrolled out of view else
>>> you'll eating up your resource handles.
>>>
>>> The feature I added to grid is that you can subscribed to the grid and
>>> you get informed about the currently showing cells in the view:
>>>
>>> a) when a cell is scrolled into view you can set an placeholder and span
>>> a background-thread fetching the image restoring it in a temp dir and
>>> replace the placeholder
>>>
>>> b) when a cell is scrolled out of view you can set dipose the resource
>>> and set the image back to the placeholder and next time
>>>
>>> c) when the cell is once more scrolled into view check you local-disk
>>> cache if the image is there load and return it else a)
>>>
>>> I don't know if Gallery has such a feature but if not it would maybe
>>> make sense to work together on a common API both widgets provide to
>>> their users.
>>>
>>> Tom
>>>
>>> user@domain.invalid schrieb:
>>>> Hello everyone,
>>>>
>>>> We are currently developping a cataloging system, and we are using the
>>>> GalleryViewer.
>>>>
>>>> We are loading a lot of image from the internet so I was wondering if
>>>> there was any way I could load the image lazily?
>>>> For example when loading a bunch of images into the gallery, i would
>>>> like to display first a default image and the tittle of the image. And
>>>> then in a thread fetch the image from the internet and replace the
>>>> default image with the correct one for each gallery item.
>>>>
>>>> Thank you very much,
>>>>
>>>> Baptiste
>>>
>
>
|
|
|
Re: Gallery image loading question [message #593110 is a reply to message #61539] |
Wed, 07 January 2009 15:08  |
Eclipse User |
|
|
|
Hi Nicolas,
Nicolas Richeton schrieb:
> A common API would be great.
>
> I did lazy image loading with Gallery and Table in Sharemedia
> www.sf.net/projects/sharemedia.
>
> see org.sharemedia.services.imageservice.*
> and org.sharemedia.libraryview.gallery.*
>
> The basic idea is to use :
> - SetData event to create the item, but not the image.
> - Paint event to create the image if there is none or if the previous
> one was disposed
> - A class (WidgetImageCache) ensure that the widget does not creat
> more than X images, and dispose the oldest ones if necessary.
> - When the widget is hidden, the cache cleans all images to release
> memory.
>
> The good thing is that this works with all SWT controls with no
> additionnal API
>
> On the other side :
> - the cache can keep more images than necessary (cache > visible items).
> - if the widget can display more items than the cache size (cache <
> visible), painting is slow because all images are disposed right after use.
It's maybe not only suiteable for Images, Fonts, ... all types resources
and even Strings can be a memory / handler problem.
>
> To solve these issues, I only need a way to know how many items are
> visible in a control to set the cache size accordingly.
>
> If we work on an API, we have to ensure that the SWT team is ok to
> support it in SWT default widgets.
>
This is impossible for SWT and so the SetData-call back works
differently in SWT as far as I remember (called only once for the
lifetime of a Table/TreeItem [1]).
Tom
[1] http://tom-eclipse-dev.blogspot.com/2007/01/what-items-are-v isible-in-tabletree.html
--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
|
|
|
Goto Forum:
Current Time: Sat May 10 11:58:36 EDT 2025
Powered by FUDForum. Page generated in 0.04786 seconds
|