Home » Eclipse Projects » Standard Widget Toolkit (SWT) » Text on a GC
Text on a GC [message #466888] |
Wed, 18 January 2006 23:03 |
Adam Kumpf Messages: 14 Registered: July 2009 |
Junior Member |
|
|
Hello all.
I have a canvas with lots of objects. (painted lines, rectangles, etc.)
and would like to place a text editor on the top of it.. The most
straight-forward way I see to get all the functionality of a word
processor is to simply use a "Text" or "StyledText" widget. The problem
is that is paints the background white (or some other color) no matter
what I try. I thought the SWT.NO_BACKGROUND style might do the trick, but
no luck there either. I also thought a LineBackgroundListener could work
by setting the background color to null, but it still paints it white.
The items on my canvas are being drawn by the Paint method in my canvas.
I pass the GC, location, and some other variables to the objects on the
canvas and they paint themselves. Does anyone have any good ideas on how
I can make a nice text editor following this same form?? i.e. having
access to the paint method of the object so I can paint it where I want it
on my existing canvas's GC (maybe even transform the GC first to do
dynamic scaling of text.. fun fun!). The "TextLayout" seems to get close,
but doesn't have any of the functionality to handle cursors and seems to
undo any transformations to the GC I pass to it. I implemented most of
what I need with the TextLayout and a simple cursor, but it's very clunky
and slow and will need TONs of hours of testing to catch all the little
edge cases that SWT has already done a nice job considering. Any ideas?
Thanks so much for your help. :)
Best Regards,
Adam Kumpf
kumpf@mit.edu
http://web.mit.edu/kumpf/www/
|
|
|
Re: Text on a GC [message #466899 is a reply to message #466888] |
Thu, 19 January 2006 02:16 |
Jeremy Dowdall Messages: 48 Registered: July 2009 |
Member |
|
|
there's no transparent background for SWT widgets, so have you tried
using the StyledText widget as the Canvas and drawing your objects in
its paint method?
are these objects able to be selected and moved / resized? if so, GEF
may be helpful (they also have a wysiwyg text editor example that may
prove interesting)
Adam Kumpf wrote:
> Hello all.
>
> I have a canvas with lots of objects. (painted lines, rectangles, etc.)
> and would like to place a text editor on the top of it.. The most
> straight-forward way I see to get all the functionality of a word
> processor is to simply use a "Text" or "StyledText" widget. The problem
> is that is paints the background white (or some other color) no matter
> what I try. I thought the SWT.NO_BACKGROUND style might do the trick,
> but no luck there either. I also thought a LineBackgroundListener could
> work by setting the background color to null, but it still paints it white.
>
> The items on my canvas are being drawn by the Paint method in my
> canvas. I pass the GC, location, and some other variables to the
> objects on the canvas and they paint themselves. Does anyone have any
> good ideas on how I can make a nice text editor following this same
> form?? i.e. having access to the paint method of the object so I can
> paint it where I want it on my existing canvas's GC (maybe even
> transform the GC first to do dynamic scaling of text.. fun fun!). The
> "TextLayout" seems to get close, but doesn't have any of the
> functionality to handle cursors and seems to undo any transformations to
> the GC I pass to it. I implemented most of what I need with the
> TextLayout and a simple cursor, but it's very clunky and slow and will
> need TONs of hours of testing to catch all the little edge cases that
> SWT has already done a nice job considering. Any ideas?
>
> Thanks so much for your help. :)
>
> Best Regards,
> Adam Kumpf
> kumpf@mit.edu
> http://web.mit.edu/kumpf/www/
>
>
|
|
|
Re: Text on a GC [message #466942 is a reply to message #466899] |
Thu, 19 January 2006 15:09 |
Jan Messages: 10 Registered: July 2009 |
Junior Member |
|
|
Jeremy Dowdall wrote:
> there's no transparent background for SWT widgets, so have you tried
> using the StyledText widget as the Canvas and drawing your objects in
> its paint method?
>
> are these objects able to be selected and moved / resized? if so, GEF
> may be helpful (they also have a wysiwyg text editor example that may
> prove interesting)
>
>
> Adam Kumpf wrote:
>
>> Hello all.
>>
>> I have a canvas with lots of objects. (painted lines, rectangles,
>> etc.) and would like to place a text editor on the top of it.. The
>> most straight-forward way I see to get all the functionality of a word
>> processor is to simply use a "Text" or "StyledText" widget. The
>> problem is that is paints the background white (or some other color)
>> no matter what I try. I thought the SWT.NO_BACKGROUND style might do
>> the trick, but no luck there either. I also thought a
>> LineBackgroundListener could work by setting the background color to
>> null, but it still paints it white.
>>
>> The items on my canvas are being drawn by the Paint method in my
>> canvas. I pass the GC, location, and some other variables to the
>> objects on the canvas and they paint themselves. Does anyone have any
>> good ideas on how I can make a nice text editor following this same
>> form?? i.e. having access to the paint method of the object so I can
>> paint it where I want it on my existing canvas's GC (maybe even
>> transform the GC first to do dynamic scaling of text.. fun fun!). The
>> "TextLayout" seems to get close, but doesn't have any of the
>> functionality to handle cursors and seems to undo any transformations
>> to the GC I pass to it. I implemented most of what I need with the
>> TextLayout and a simple cursor, but it's very clunky and slow and will
>> need TONs of hours of testing to catch all the little edge cases that
>> SWT has already done a nice job considering. Any ideas?
>>
>> Thanks so much for your help. :)
>>
>> Best Regards,
>> Adam Kumpf
>> kumpf@mit.edu
>> http://web.mit.edu/kumpf/www/
>>
>>
there is just use the latest development release 3.2 M4 and see this
snippet
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.sni ppets/src/org/eclipse/swt/snippets/Snippet214.java?rev=HEAD& amp;content-type=text/vnd.viewcvs-markup
|
|
|
Re: Text on a GC [message #466944 is a reply to message #466942] |
Thu, 19 January 2006 17:20 |
Adam Kumpf Messages: 14 Registered: July 2009 |
Junior Member |
|
|
Jan wrote:
> Jeremy Dowdall wrote:
>> there's no transparent background for SWT widgets, so have you tried
>> using the StyledText widget as the Canvas and drawing your objects in
>> its paint method?
>>
>> are these objects able to be selected and moved / resized? if so, GEF
>> may be helpful (they also have a wysiwyg text editor example that may
>> prove interesting)
>>
>>
>> Adam Kumpf wrote:
>>
>>> Hello all.
>>>
>>> I have a canvas with lots of objects. (painted lines, rectangles,
>>> etc.) and would like to place a text editor on the top of it.. The
>>> most straight-forward way I see to get all the functionality of a word
>>> processor is to simply use a "Text" or "StyledText" widget. The
>>> problem is that is paints the background white (or some other color)
>>> no matter what I try. I thought the SWT.NO_BACKGROUND style might do
>>> the trick, but no luck there either. I also thought a
>>> LineBackgroundListener could work by setting the background color to
>>> null, but it still paints it white.
>>>
>>> The items on my canvas are being drawn by the Paint method in my
>>> canvas. I pass the GC, location, and some other variables to the
>>> objects on the canvas and they paint themselves. Does anyone have any
>>> good ideas on how I can make a nice text editor following this same
>>> form?? i.e. having access to the paint method of the object so I can
>>> paint it where I want it on my existing canvas's GC (maybe even
>>> transform the GC first to do dynamic scaling of text.. fun fun!). The
>>> "TextLayout" seems to get close, but doesn't have any of the
>>> functionality to handle cursors and seems to undo any transformations
>>> to the GC I pass to it. I implemented most of what I need with the
>>> TextLayout and a simple cursor, but it's very clunky and slow and will
>>> need TONs of hours of testing to catch all the little edge cases that
>>> SWT has already done a nice job considering. Any ideas?
>>>
>>> Thanks so much for your help. :)
>>>
>>> Best Regards,
>>> Adam Kumpf
>>> kumpf@mit.edu
>>> http://web.mit.edu/kumpf/www/
>>>
>>>
> there is just use the latest development release 3.2 M4 and see this
> snippet
>
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.sni ppets/src/org/eclipse/swt/snippets/Snippet214.java?rev=HEAD& amp;content-type=text/vnd.viewcvs-markup
It seems like lots of people are in the same boat here. I think it is
clever to suggest setting the background image of a component to mimic
transparency, however, computationaly this must be very expensive...
especially if the underlying objects change somewhat often.
I'm sure that I'm over-simplifying, but shouldn't it be fairly straight
forward to implement the "NO_BACKGROUND" style fairly easily within a
component? In fact, most of it can probably be done at a higher level
class that most of the components use.. I think it boils down to this:
1. If no double buffering is used, simply do not paint/fill any color
for the background. This makes the component transparent.
2. If double-buffering is being used, allow the image to start out
transparent instead of with a background color. Transparency seems to
work when I load images, so I imagine if the offScreenImage is initializd
as transparent (instead of White, for example), then checking for the
style NO_BACKGROUND and choosing not to fill the background color on the
offScreenImage should work..
What do people think about this? This would probably be a pretty big
step forward for SWT as you could do some pretty advanced things in a
hurry (and do them quickly without excessing computation!!).
Thanks,
Adam
kumpf@mit.edu
http://web.mit.edu/kumpf/www/
|
|
| | |
Goto Forum:
Current Time: Thu Dec 26 10:46:51 GMT 2024
Powered by FUDForum. Page generated in 0.03751 seconds
|