[Pharo-project] Topics for a term project in CG
Hello! My student is looking for a topic for her term project/paper in area of Computer Graphics and UI maybe. I didn't pay enough attention to this area for some time, so I ask if there are some tasks we could help to solve here? Please note, she has no strong background in CG. One topic could be something about Morphic, but what is it exactly? Or any other idea is welcome also. And one more thing: our university imposes some additional requirements thus not every practically useful topic can be accepted, I'll have to select so more ideas is better. TIA for any help. Best regards, Dennis Schetinin
On 17 September 2012 12:16, Dennis Schetinin <chaetal@gmail.com> wrote:
Hello!
My student is looking for a topic for her term project/paper in area of Computer Graphics and UI maybe. I didn't pay enough attention to this area for some time, so I ask if there are some tasks we could help to solve here? Please note, she has no strong background in CG. One topic could be something about Morphic, but what is it exactly? Or any other idea is welcome also.
And one more thing: our university imposes some additional requirements thus not every practically useful topic can be accepted, I'll have to select so more ideas is better.
Of course! We have a lot of topics related to GC: You should know , what Athens is, it is a vector graphics framework we're currently working on. so, pick one (or two): + UI Widgets Framework for Athens + integrating Athens with Morphic + zoomable interface using Athens + SVG importer for Athens + Animation framework + OpenGL backend for Athens i can guide and mentor, of course :)
TIA for any help.
Best regards, Dennis Schetinin
-- Best regards, Igor Stasenko.
Thank you very much for all the ideas, that's exactly I was looking for. We have to explore Roassal and Athens a little bit before making a decision as both directions are so interesting⦠Best regards, Dennis Schetinin Sent with Sparrow (http://www.sparrowmailapp.com/?sig) On Monday, 17 September 2012 г. at 19:06, Igor Stasenko wrote:
On 17 September 2012 12:16, Dennis Schetinin <chaetal@gmail.com (mailto:chaetal@gmail.com)> wrote:
Hello!
My student is looking for a topic for her term project/paper in area of Computer Graphics and UI maybe. I didn't pay enough attention to this area for some time, so I ask if there are some tasks we could help to solve here? Please note, she has no strong background in CG. One topic could be something about Morphic, but what is it exactly? Or any other idea is welcome also.
And one more thing: our university imposes some additional requirements thus not every practically useful topic can be accepted, I'll have to select so more ideas is better.
Of course! We have a lot of topics related to GC:
You should know , what Athens is, it is a vector graphics framework we're currently working on.
so, pick one (or two):
+ UI Widgets Framework for Athens + integrating Athens with Morphic + zoomable interface using Athens + SVG importer for Athens + Animation framework + OpenGL backend for Athens
i can guide and mentor, of course :)
TIA for any help.
Best regards, Dennis Schetinin
-- Best regards, Igor Stasenko.
Ok, it took more than a month to decide, but the result is that we selected the "Athens direction". Now we need more details about some of the tasks you mentioned to select one:
+ integrating Athens with Morphic
I'm possibly mistaken, but I thought you are already working on this? What is the state of art here? What are the final objective, and what are the recent tasks? Where to start?
+ zoomable interface using Athens
This sounds cool, but could you please explain the idea, how do you see possible results?
+ Animation framework
The question is almost the same: what kind of animation framework this could be? Any prototypes and/or new ideas for it? Best regards, Dennis Schetinin On Monday, 17 September 2012 г. at 19:06, Igor Stasenko wrote:
On 17 September 2012 12:16, Dennis Schetinin <chaetal@gmail.com (mailto:chaetal@gmail.com)> wrote:
Hello!
My student is looking for a topic for her term project/paper in area of Computer Graphics and UI maybe. I didn't pay enough attention to this area for some time, so I ask if there are some tasks we could help to solve here? Please note, she has no strong background in CG. One topic could be something about Morphic, but what is it exactly? Or any other idea is welcome also.
And one more thing: our university imposes some additional requirements thus not every practically useful topic can be accepted, I'll have to select so more ideas is better.
Of course! We have a lot of topics related to GC:
You should know , what Athens is, it is a vector graphics framework we're currently working on.
so, pick one (or two):
+ UI Widgets Framework for Athens + integrating Athens with Morphic + zoomable interface using Athens + SVG importer for Athens + Animation framework + OpenGL backend for Athens
i can guide and mentor, of course :)
TIA for any help.
Best regards, Dennis Schetinin
-- Best regards, Igor Stasenko.
On 23 October 2012 17:09, Dennis Schetinin <chaetal@gmail.com> wrote:
Ok, it took more than a month to decide, but the result is that we selected the "Athens direction". Now we need more details about some of the tasks you mentioned to select one:
+ integrating Athens with Morphic
I'm possibly mistaken, but I thought you are already working on this? What is the state of art here? What are the final objective, and what are the recent tasks? Where to start?
Right, this is not 'start from scratch', but more 'join and help' working style. The goal is integrate Athens into Morphic ecosystem, and make everything rendered via Athens, at the end, replacing completely balloon graphics engine. The state of art is: many Morphs are now can render themselves to athens canvas. Many of them still not there (but easy to implement). But most hard one is text morph, which doing layout etc.. i am currently working on it.. I implemented a text layout/rendering (by creating a new TextMorph subclass), but it means that all tools should use this morph.. which is not very good. Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
+ zoomable interface using Athens
This sounds cool, but could you please explain the idea, how do you see possible results?
This kind of work is rethinking the Pharo UI has in a way to employ zoomable (vector-based) capabilities of graphics engine. How you laying out windows on desktop to prevent clutter? How you design zoom in/out / pan etc. Just google for 'zooming UI' to see many related works. http://www.codinghorror.com/blog/2007/05/zoomable-interfaces.html http://www.youtube.com/watch?v=q8ZP23QsRd0&feature=gv
+ Animation framework
The question is almost the same: what kind of animation framework this could be? Any prototypes and/or new ideas for it?
So, the idea is to look for animation in frameworks like SVG and Apple Animation Framework and design a framework with similar capabilities for Pharo. https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Core... http://www.w3.org/TR/SVG/ The goal is to enable developers to easily express animations, and implement different visual effects like zoon-in/out, fade in/out, flip, sliding and mophing transitions etc -- Best regards, Igor Stasenko.
Igor wanted to ask you but kept forgetting. I wanted to make my own GUI api for project "Ephestos" which is visual coding for pharo and 3d app Blender. At first NBOpenGL was a candidate , but now I also consider Athens , especially if you say you want to port morphic to it. I am certainly interested in vector based GUIs but another thing that interest me is GUIs with loads of animations like the ones you see in games. You think Athens is fast enough to be used for such busy interfaces ? I would prefer to make my own widgets / morphs and move away from the standard look of windows and buttons and more make it look like GUIs you see in games and Sci Fi movies since the fun factor is a big goal in my project. Since you are experienced in this than me , what you think ? The problem with NBOpenGL is that I fear I will have a lot more work to do, but that is debatable. Of course you implementing morphic in Athens even partially makes my life a lot easier. Another question I have is do I need Cairo installed to use Athens ? I would rather use something that does not require installations from the user. If yes is it possible to package Cairo with Pharo and Athens ? If anyone else want to jump and advice me, I am more than welcome it. ________________________________ From: Igor Stasenko <siguctua@gmail.com> To: Pharo-project@lists.gforge.inria.fr Sent: Tuesday, 23 October 2012, 18:49 Subject: Re: [Pharo-project] Topics for a term project in CG On 23 October 2012 17:09, Dennis Schetinin <chaetal@gmail.com> wrote:
Ok, it took more than a month to decide, but the result is that we selected the "Athens direction". Now we need more details about some of the tasks you mentioned to select one:
+ integrating Athens with Morphic
I'm possibly mistaken, but I thought you are already working on this? What is the state of art here? What are the final objective, and what are the recent tasks? Where to start?
Right, this is not 'start from scratch', but more 'join and help' working style. The goal is integrate Athens into Morphic ecosystem, and make everything rendered via Athens, at the end, replacing completely balloon graphics engine. The state of art is: many Morphs are now can render themselves to athens canvas. Many of them still not there (but easy to implement). But most hard one is text morph, which doing layout etc.. i am currently working on it.. I implemented a text layout/rendering (by creating a new TextMorph subclass), but it means that all tools should use this morph.. which is not very good. Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
+ zoomable interface using Athens
This sounds cool, but could you please explain the idea, how do you see possible results?
This kind of work is rethinking the Pharo UI has in a way to employ zoomable (vector-based) capabilities of graphics engine. How you laying out windows on desktop to prevent clutter? How you design zoom in/out / pan etc. Just google for 'zooming UI' to see many related works. http://www.codinghorror.com/blog/2007/05/zoomable-interfaces.html http://www.youtube.com/watch?v=q8ZP23QsRd0&feature=gv
+ Animation framework
The question is almost the same: what kind of animation framework this could be? Any prototypes and/or new ideas for it?
So, the idea is to look for animation in frameworks like SVG and Apple Animation Framework and design a framework with similar capabilities for Pharo. https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Core... http://www.w3.org/TR/SVG/ The goal is to enable developers to easily express animations, and implement different visual effects like zoon-in/out, fade in/out, flip, sliding and mophing transitions etc -- Best regards, Igor Stasenko.
On 23 October 2012 18:08, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
Igor wanted to ask you but kept forgetting. I wanted to make my own GUI api for project "Ephestos" which is visual coding for pharo and 3d app Blender. At first NBOpenGL was a candidate , but now I also consider Athens , especially if you say you want to port morphic to it.
Let me explain a bit about Athens: Athens is an API for vector-based 2D graphics. It was designed with layered architecture in mind: there is a top-level (user) API, and implementation , which can use one or another backend. Like that, users can be confident that no matter what rendering backend is used, they don't have to adapt to it, and just keep using same API for drawing. Currently there is 2 backends: balloon (using VM plugins) and cairo (using cairo library). Other backends could be: OpenGL, OpenVG, Quartz(native Mac OS vector engine) Btw cairo also provides quartz and openvg as one of its backends, so, in short run with some effort we can use cairo for those backends.. but in a long run it would be much better, of course, to provide backends to use these frameworks directly , avoiding extra wrapping layer , such as cairo. Also, i read that Mozilla moves to a new , faster & better rendering engine (can't remember its name), which benefits from multicore hardware, so there's a lot of choices..
I am certainly interested in vector based GUIs but another thing that interest me is GUIs with loads of animations like the ones you see in games. You think Athens is fast enough to be used for such busy interfaces ?
it is too early to judge how fast it is , because currently i am at "make it work" stage, not "make it fast". However the benchmarking drawing full morphic desktop (all windows & morphs) is already quite promising - they show comparable performance of balloon engine (a bit faster , in fact, but just because i am still cannot render the text morphs). Cairo is faster than balloon.. but since there is many conversion(s) happen to pass data to it (like converting forms to cairo surfaces, converting gradients etc), it suffers from it at bit. But that can be mitigated by introducing caching etc. And of course, if you going to implement own (non-morphic) UI which using Athens, you can deal much better with these caveats. I paying a lot of attention in Athens to make sure API does not comes with big overhead. It is yet to be seen, if i succeeded, because there's always some tradeoffs, basically: how to provide a nice object-oriented API to end users, without exposing them to nasty and muddy world of C functions which doing real job.
I would prefer to make my own widgets / morphs and move away from the standard look of windows and buttons and more make it look like GUIs you see in games and Sci Fi movies since the fun factor is a big goal in my project. Since you are experienced in this than me , what you think ?
The problem with NBOpenGL is that I fear I will have a lot more work to do, but that is debatable. Of course you implementing morphic in Athens even partially makes my life a lot easier.
I wish to start implementing Athens backend for NBOpenGL.. but that's only plans now. I have no time for it. If you maybe know, recently NVidia release an opengl extension for 2D vector graphics, which provides quite good API for 2D vector-based rendering. And i checked and my Mac OS X 10.7.5 already contains that extension. http://developer.nvidia.com/nv-path-rendering so, the idea is not to implement all computation(s) and path(s) by yourself using opengl, but to bind to this functionality. Hopefully, after couple of years , this extension will find its way to most graphic cards/GL drivers, not just NVidia ones. (and if you worry about speed, this thingy is 100-1000 x faster than cairo ;)
Another question I have is do I need Cairo installed to use Athens ? I would rather use something that does not require installations from the user. If yes is it possible to package Cairo with Pharo and Athens ?
The idea now is to ship VMs bundled with cairo libraries. Because balloon backend i made is quite limited, shitty and slow and was made mostly to develop & test Athens api (still it can be used as a last resort, when nothing better available)). Today i finally made cairo build successfully on windows (already did that for Mac), and on linux(es), cairo is already installed on system(s) by default, so there is nothing to care about from user's perspecitve (well, except from some minimalistic/exotic distributions, which does not includes it).
If anyone else want to jump and advice me, I am more than welcome it.
P.S. Needless to say, that i would be happy if you can join and help developing Athens. Or even if you decide to just use it, it will also help a lot for finding/fixing bugs and improve quality and performance. The Athens (like Pharo) is open-source project from its very birth, and open for any contributions by anyone. -- Best regards, Igor Stasenko.
Ok thanks for the clarification, I understand now. I don't have any issue contributing to the project. From what I see Athens is orientated towards freeform graphics which is what I want to achieve anyway. I only hope my coding skills are enough to make a satisfactory contribution. Thanks I will now search for documentation and read the code. ----- Original Message ----- From: Igor Stasenko <siguctua@gmail.com> To: Pharo-project@lists.gforge.inria.fr; dimitris chloupis <thekilon@yahoo.co.uk> Cc: Sent: Tuesday, 23 October 2012, 22:28 Subject: Re: [Pharo-project] Is Athens a good candidate from my project "Ephestos" ? On 23 October 2012 18:08, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
Igor wanted to ask you but kept forgetting. I wanted to make my own GUI api for project "Ephestos" which is visual coding for pharo and 3d app Blender. At first NBOpenGL was a candidate , but now I also consider Athens , especially if you say you want to port morphic to it.
Let me explain a bit about Athens: Athens is an API for vector-based 2D graphics. It was designed with layered architecture in mind: there is a top-level (user) API, and implementation , which can use one or another backend. Like that, users can be confident that no matter what rendering backend is used, they don't have to adapt to it, and just keep using same API for drawing. Currently there is 2 backends: balloon (using VM plugins) and cairo (using cairo library). Other backends could be: OpenGL, OpenVG, Quartz(native Mac OS vector engine) Btw cairo also provides quartz and openvg as one of its backends, so, in short run with some effort we can use cairo for those backends.. but in a long run it would be much better, of course, to provide backends to use these frameworks directly , avoiding extra wrapping layer , such as cairo. Also, i read that Mozilla moves to a new , faster & better rendering engine (can't remember its name), which benefits from multicore hardware, so there's a lot of choices..
I am certainly interested in vector based GUIs but another thing that interest me is GUIs with loads of animations like the ones you see in games. You think Athens is fast enough to be used for such busy interfaces ?
it is too early to judge how fast it is , because currently i am at "make it work" stage, not "make it fast". However the benchmarking drawing full morphic desktop (all windows & morphs) is already quite promising - they show comparable performance of balloon engine (a bit faster , in fact, but just because i am still cannot render the text morphs). Cairo is faster than balloon.. but since there is many conversion(s) happen to pass data to it (like converting forms to cairo surfaces, converting gradients etc), it suffers from it at bit. But that can be mitigated by introducing caching etc. And of course, if you going to implement own (non-morphic) UI which using Athens, you can deal much better with these caveats. I paying a lot of attention in Athens to make sure API does not comes with big overhead. It is yet to be seen, if i succeeded, because there's always some tradeoffs, basically: how to provide a nice object-oriented API to end users, without exposing them to nasty and muddy world of C functions which doing real job.
I would prefer to make my own widgets / morphs and move away from the standard look of windows and buttons and more make it look like GUIs you see in games and Sci Fi movies since the fun factor is a big goal in my project. Since you are experienced in this than me , what you think ?
The problem with NBOpenGL is that I fear I will have a lot more work to do, but that is debatable. Of course you implementing morphic in Athens even partially makes my life a lot easier.
I wish to start implementing Athens backend for NBOpenGL.. but that's only plans now. I have no time for it. If you maybe know, recently NVidia release an opengl extension for 2D vector graphics, which provides quite good API for 2D vector-based rendering. And i checked and my Mac OS X 10.7.5 already contains that extension. http://developer.nvidia.com/nv-path-rendering so, the idea is not to implement all computation(s) and path(s) by yourself using opengl, but to bind to this functionality. Hopefully, after couple of years , this extension will find its way to most graphic cards/GL drivers, not just NVidia ones. (and if you worry about speed, this thingy is 100-1000 x faster than cairo ;)
Another question I have is do I need Cairo installed to use Athens ? I would rather use something that does not require installations from the user. If yes is it possible to package Cairo with Pharo and Athens ?
The idea now is to ship VMs bundled with cairo libraries. Because balloon backend i made is quite limited, shitty and slow and was made mostly to develop & test Athens api (still it can be used as a last resort, when nothing better available)). Today i finally made cairo build successfully on windows (already did that for Mac), and on linux(es), cairo is already installed on system(s) by default, so there is nothing to care about from user's perspecitve (well, except from some minimalistic/exotic distributions, which does not includes it).
If anyone else want to jump and advice me, I am more than welcome it.
P.S. Needless to say, that i would be happy if you can join and help developing Athens. Or even if you decide to just use it, it will also help a lot for finding/fixing bugs and improve quality and performance. The Athens (like Pharo) is open-source project from its very birth, and open for any contributions by anyone. -- Best regards, Igor Stasenko.
On 23 October 2012 23:07, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
Ok thanks for the clarification, I understand now.
I don't have any issue contributing to the project. From what I see Athens is orientated towards freeform graphics which is what I want to achieve anyway. I only hope my coding skills are enough to make a satisfactory contribution. Thanks I will now search for documentation and read the code.
There's no documentation ready yet. But to get the basics, look at AthensSurfaceExamples code. It covers most of basic operations and functionality available. -- Best regards, Igor Stasenko.
Hello 2012/10/23 Igor Stasenko <siguctua@gmail.com>
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
I am very interesting in details. Do you have description or code somewhere? I always think about new text editor implementation based on Presenty. I want remove all hardcoded stuff like cursor navigation arrow keys, copy/paste shortcuts, keyboard based characters input. User should have facility to specify how execute such primitive actions. For example, user can just draw characters on screen to input it or input it by voice. User can add buttons to move cursor, can add visual keyboard (maybe native for OS). And I think about subclassing TextMorph to implement my ideas. But TextMorph is so crappy. So I will be happy if somebody give me clean implementation of TextMorph.
On 23 October 2012 21:01, Denis Kudriashov <dionisiydk@gmail.com> wrote:
Hello
2012/10/23 Igor Stasenko <siguctua@gmail.com>
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
I am very interesting in details. Do you have description or code somewhere?
I always think about new text editor implementation based on Presenty. I want remove all hardcoded stuff like cursor navigation arrow keys, copy/paste shortcuts, keyboard based characters input. User should have facility to specify how execute such primitive actions. For example, user can just draw characters on screen to input it or input it by voice. User can add buttons to move cursor, can add visual keyboard (maybe native for OS).
Take a look at http://www.smalltalkhub.com/#!/~sig/TxText there's already a working (since tests are green ;) implementation of new text model. And, as you said, you don't have to deal with hardcoded stuff. The text model provides a 'position' API, which can be used to navigate text directly: - moveLeft, moveRight, lineUp, lineDown etc There's also a 'selection' model, which allows you to 'cut' , or 'replace' portions of text at given position. So, the text model designed by having text editor in mind. I am working on making attributes work for it (bold/italic etc).. and then renderer, layouting and editor(s). Well, actually editor will be most simplest piece of puzzle after i finish all the bottom layers :) If you wanna join and help, you're wellcome.. because i am stretched today between many things: NB, Athens, VMs
And I think about subclassing TextMorph to implement my ideas. But TextMorph is so crappy. So I will be happy if somebody give me clean implementation of TextMorph.
hehe , stand in a line then. You will be after me :) Everyone wants something better than TextMorph, but nobody wants to make it real :) -- Best regards, Igor Stasenko.
2012/10/23 Igor Stasenko <siguctua@gmail.com>
Take a look at http://www.smalltalkhub.com/#!/~sig/TxText
there's already a working (since tests are green ;) implementation of new text model. And, as you said, you don't have to deal with hardcoded stuff. The text model provides a 'position' API, which can be used to navigate text directly: - moveLeft, moveRight, lineUp, lineDown etc There's also a 'selection' model, which allows you to 'cut' , or 'replace' portions of text at given position. So, the text model designed by having text editor in mind. I am working on making attributes work for it (bold/italic etc).. and then renderer, layouting and editor(s).
Well, actually editor will be most simplest piece of puzzle after i finish all the bottom layers :)
Ok. I look at code. Nice design. Good tests. When I experimented with my implementation (very little) I also introduced cursor object which was responsible for moving, inserting and deletion characters and holds position in text. I stop my experiment when I start think about text layout and how it can influence "cursor behaviour". You have #moveDown method to move cursor down to next line. But how you consider implement this for "visual text lines" which created by text layout without CR separator? Do you consider rebuild TextModel instance when text bounds will changed? (to reflect visual lines state). Same questions about text selection. How to track selection positions when text bounds changed and it influence visual lines state?
Oh, well, I'll jump in as I spend an inordinate amount of time learning about that text stuff. One requirement I'd love t see covered: have a proper text model that scales when the size of the text increases a lot. What is currently implemented is not that bad, it is just with too many layers and documentation is poor. But most of what's in there is needed for rendering the text, laying out the material. It just does it badly, and gets the fonts metrics wrong (italics, bold...). And also, the TextMorph is married with the SHStyler and SmalltalkEditor for no good reason at all. What would be great is already a BasicTextMorph with a BasicEditor that just edit a Text with TextAttributes. This would leave out the Smalltalk marriage and provide a good enough foundation to build upon. Phil 2012/10/23 Denis Kudriashov <dionisiydk@gmail.com>
Hello
2012/10/23 Igor Stasenko <siguctua@gmail.com>
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
I am very interesting in details. Do you have description or code somewhere?
I always think about new text editor implementation based on Presenty. I want remove all hardcoded stuff like cursor navigation arrow keys, copy/paste shortcuts, keyboard based characters input. User should have facility to specify how execute such primitive actions. For example, user can just draw characters on screen to input it or input it by voice. User can add buttons to move cursor, can add visual keyboard (maybe native for OS).
And I think about subclassing TextMorph to implement my ideas. But TextMorph is so crappy. So I will be happy if somebody give me clean implementation of TextMorph.
On 24 October 2012 00:09, phil@highoctane.be <phil@highoctane.be> wrote:
Oh, well, I'll jump in as I spend an inordinate amount of time learning about that text stuff.
One requirement I'd love t see covered: have a proper text model that scales when the size of the text increases a lot.
What is currently implemented is not that bad, it is just with too many layers and documentation is poor.
But most of what's in there is needed for rendering the text, laying out the material.
It just does it badly, and gets the fonts metrics wrong (italics, bold...).
And also, the TextMorph is married with the SHStyler and SmalltalkEditor for no good reason at all.
What would be great is already a BasicTextMorph with a BasicEditor that just edit a Text with TextAttributes.
This would leave out the Smalltalk marriage and provide a good enough foundation to build upon.
Yeah.. this stuff cries for cleanup. The current code is a result of different people at different time(s) adding more and more code to it without revising / cleaning it up.
Phil
2012/10/23 Denis Kudriashov <dionisiydk@gmail.com>
Hello
2012/10/23 Igor Stasenko <siguctua@gmail.com>
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
I am very interesting in details. Do you have description or code somewhere?
I always think about new text editor implementation based on Presenty. I want remove all hardcoded stuff like cursor navigation arrow keys, copy/paste shortcuts, keyboard based characters input. User should have facility to specify how execute such primitive actions. For example, user can just draw characters on screen to input it or input it by voice. User can add buttons to move cursor, can add visual keyboard (maybe native for OS).
And I think about subclassing TextMorph to implement my ideas. But TextMorph is so crappy. So I will be happy if somebody give me clean implementation of TextMorph.
-- Best regards, Igor Stasenko.
Le 24/10/2012 03:07, Igor Stasenko a écrit :
On 24 October 2012 00:09, phil@highoctane.be <phil@highoctane.be> wrote:
Oh, well, I'll jump in as I spend an inordinate amount of time learning about that text stuff.
One requirement I'd love t see covered: have a proper text model that scales when the size of the text increases a lot.
What is currently implemented is not that bad, it is just with too many layers and documentation is poor.
But most of what's in there is needed for rendering the text, laying out the material.
It just does it badly, and gets the fonts metrics wrong (italics, bold...).
And also, the TextMorph is married with the SHStyler and SmalltalkEditor for no good reason at all.
What would be great is already a BasicTextMorph with a BasicEditor that just edit a Text with TextAttributes.
This would leave out the Smalltalk marriage and provide a good enough foundation to build upon.
Yeah.. this stuff cries for cleanup. The current code is a result of different people at different time(s) adding more and more code to it without revising / cleaning it up.
Great! Would it be possible to make it abstract enough to be able to put non-character objects in the text? It's very convenient in some cases (figures, images, buttons, forms, etc...), and is a good test of how clean is the formatting and navigation code. I did extend the VisualWorks text editor for an hypermedia in 1993 and managed to include any widget as a character... I could try that again with the current TextMorph, if someone needs it, but I'd better wait for a very motivated Igor to build the perfect TextMorph :)
Phil
2012/10/23 Denis Kudriashov <dionisiydk@gmail.com>
Hello
2012/10/23 Igor Stasenko <siguctua@gmail.com>
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
I am very interesting in details. Do you have description or code somewhere?
I always think about new text editor implementation based on Presenty. I want remove all hardcoded stuff like cursor navigation arrow keys, copy/paste shortcuts, keyboard based characters input. User should have facility to specify how execute such primitive actions. For example, user can just draw characters on screen to input it or input it by voice. User can add buttons to move cursor, can add visual keyboard (maybe native for OS).
-- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
Le 23/10/2012 21:01, Denis Kudriashov a écrit :
Hello
2012/10/23 Igor Stasenko <siguctua@gmail.com <mailto:siguctua@gmail.com>>
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
I am very interesting in details. Do you have description or code somewhere?
I always think about new text editor implementation based on Presenty. I want remove all hardcoded stuff like cursor navigation arrow keys, copy/paste shortcuts, keyboard based characters input. User should have facility to specify how execute such primitive actions. For example, user can just draw characters on screen to input it or input it by voice. User can add buttons to move cursor, can add visual keyboard (maybe native for OS).
There is some code underway (I think it's buried in one of the issue) where I was trying to extract that sort of code and move it as a Keymapping shortcut. With the current TextMorph, it's possible to do what you describe even if the code architecture makes it a bit difficult. No subclassing needed :)
And I think about subclassing TextMorph to implement my ideas. But TextMorph is so crappy. So I will be happy if somebody give me clean implementation of TextMorph.
It remain to be seen if a really clean and simple TextMorph is doable. Text layout (compositing) algorithms are, in my mind, complex things. You need to invest a lot of time in understanding the code to be able to change or redo it. Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
I think we should start with the "Morphic-Athens Integration" problem. Could you please put us in the picture by specifying how we can get recent code and set a (simple for the start) task? Best regards, Dennis Schetinin On Tuesday, 23 October 2012 г. at 19:49, Igor Stasenko wrote:
On 23 October 2012 17:09, Dennis Schetinin <chaetal@gmail.com (mailto:chaetal@gmail.com)> wrote:
Ok, it took more than a month to decide, but the result is that we selected the "Athens direction". Now we need more details about some of the tasks you mentioned to select one:
+ integrating Athens with Morphic
I'm possibly mistaken, but I thought you are already working on this? What is the state of art here? What are the final objective, and what are the recent tasks? Where to start?
Right, this is not 'start from scratch', but more 'join and help' working style. The goal is integrate Athens into Morphic ecosystem, and make everything rendered via Athens, at the end, replacing completely balloon graphics engine.
The state of art is: many Morphs are now can render themselves to athens canvas. Many of them still not there (but easy to implement). But most hard one is text morph, which doing layout etc.. i am currently working on it..
I implemented a text layout/rendering (by creating a new TextMorph subclass), but it means that all tools should use this morph.. which is not very good.
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
+ zoomable interface using Athens
This sounds cool, but could you please explain the idea, how do you see possible results?
This kind of work is rethinking the Pharo UI has in a way to employ zoomable (vector-based) capabilities of graphics engine. How you laying out windows on desktop to prevent clutter? How you design zoom in/out / pan etc.
Just google for 'zooming UI' to see many related works.
http://www.codinghorror.com/blog/2007/05/zoomable-interfaces.html http://www.youtube.com/watch?v=q8ZP23QsRd0&feature=gv
+ Animation framework
The question is almost the same: what kind of animation framework this could be? Any prototypes and/or new ideas for it?
So, the idea is to look for animation in frameworks like SVG and Apple Animation Framework and design a framework with similar capabilities for Pharo.
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Core...
The goal is to enable developers to easily express animations, and implement different visual effects like zoon-in/out, fade in/out, flip, sliding and mophing transitions etc
-- Best regards, Igor Stasenko.
On 25 October 2012 08:16, Dennis Schetinin <chaetal@gmail.com> wrote:
I think we should start with the "Morphic-Athens Integration" problem. Could you please put us in the picture by specifying how we can get recent code and set a (simple for the start) task?
Gofer it squeaksource: 'Athens'; package:'ConfigurationOfAthens'; load. ConfigurationOfAthens project lastVersion load. the look if there any newer versions of packages alread, and load them too. Should i add you to developers list?
Best regards, Dennis Schetinin
On Tuesday, 23 October 2012 г. at 19:49, Igor Stasenko wrote:
On 23 October 2012 17:09, Dennis Schetinin <chaetal@gmail.com> wrote:
Ok, it took more than a month to decide, but the result is that we selected the "Athens direction". Now we need more details about some of the tasks you mentioned to select one:
+ integrating Athens with Morphic
I'm possibly mistaken, but I thought you are already working on this? What is the state of art here? What are the final objective, and what are the recent tasks? Where to start?
Right, this is not 'start from scratch', but more 'join and help' working style. The goal is integrate Athens into Morphic ecosystem, and make everything rendered via Athens, at the end, replacing completely balloon graphics engine.
The state of art is: many Morphs are now can render themselves to athens canvas. Many of them still not there (but easy to implement). But most hard one is text morph, which doing layout etc.. i am currently working on it..
I implemented a text layout/rendering (by creating a new TextMorph subclass), but it means that all tools should use this morph.. which is not very good.
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
+ zoomable interface using Athens
This sounds cool, but could you please explain the idea, how do you see possible results?
This kind of work is rethinking the Pharo UI has in a way to employ zoomable (vector-based) capabilities of graphics engine. How you laying out windows on desktop to prevent clutter? How you design zoom in/out / pan etc.
Just google for 'zooming UI' to see many related works.
http://www.codinghorror.com/blog/2007/05/zoomable-interfaces.html http://www.youtube.com/watch?v=q8ZP23QsRd0&feature=gv
+ Animation framework
The question is almost the same: what kind of animation framework this could be? Any prototypes and/or new ideas for it?
So, the idea is to look for animation in frameworks like SVG and Apple Animation Framework and design a framework with similar capabilities for Pharo.
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Core...
The goal is to enable developers to easily express animations, and implement different visual effects like zoon-in/out, fade in/out, flip, sliding and mophing transitions etc
-- Best regards, Igor Stasenko.
-- Best regards, Igor Stasenko.
Yes, add me please. Best regards, Dennis Schetinin On Thursday, 25 October 2012 г. at 15:10, Igor Stasenko wrote:
On 25 October 2012 08:16, Dennis Schetinin <chaetal@gmail.com (mailto:chaetal@gmail.com)> wrote:
I think we should start with the "Morphic-Athens Integration" problem. Could you please put us in the picture by specifying how we can get recent code and set a (simple for the start) task?
Gofer it squeaksource: 'Athens'; package:'ConfigurationOfAthens'; load.
ConfigurationOfAthens project lastVersion load.
the look if there any newer versions of packages alread, and load them too. Should i add you to developers list?
Best regards, Dennis Schetinin
On Tuesday, 23 October 2012 г. at 19:49, Igor Stasenko wrote:
On 23 October 2012 17:09, Dennis Schetinin <chaetal@gmail.com (mailto:chaetal@gmail.com)> wrote:
Ok, it took more than a month to decide, but the result is that we selected the "Athens direction". Now we need more details about some of the tasks you mentioned to select one:
+ integrating Athens with Morphic
I'm possibly mistaken, but I thought you are already working on this? What is the state of art here? What are the final objective, and what are the recent tasks? Where to start?
Right, this is not 'start from scratch', but more 'join and help' working style. The goal is integrate Athens into Morphic ecosystem, and make everything rendered via Athens, at the end, replacing completely balloon graphics engine.
The state of art is: many Morphs are now can render themselves to athens canvas. Many of them still not there (but easy to implement). But most hard one is text morph, which doing layout etc.. i am currently working on it..
I implemented a text layout/rendering (by creating a new TextMorph subclass), but it means that all tools should use this morph.. which is not very good.
Also, recently we started working on new text model. With the goal to replace an clean Text, text editing and text layout in our system (and sure thing , rendering). This is also requires a lot of work.
+ zoomable interface using Athens
This sounds cool, but could you please explain the idea, how do you see possible results?
This kind of work is rethinking the Pharo UI has in a way to employ zoomable (vector-based) capabilities of graphics engine. How you laying out windows on desktop to prevent clutter? How you design zoom in/out / pan etc.
Just google for 'zooming UI' to see many related works.
http://www.codinghorror.com/blog/2007/05/zoomable-interfaces.html http://www.youtube.com/watch?v=q8ZP23QsRd0&feature=gv
+ Animation framework
The question is almost the same: what kind of animation framework this could be? Any prototypes and/or new ideas for it?
So, the idea is to look for animation in frameworks like SVG and Apple Animation Framework and design a framework with similar capabilities for Pharo.
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Core...
The goal is to enable developers to easily express animations, and implement different visual effects like zoon-in/out, fade in/out, flip, sliding and mophing transitions etc
-- Best regards, Igor Stasenko.
-- Best regards, Igor Stasenko.
On 17/09/2012 7:16, Dennis Schetinin wrote:
Hello!
My student is looking for a topic for her term project/paper in area of Computer Graphics and UI maybe. I didn't pay enough attention to this area for some time, so I ask if there are some tasks we could help to solve here? Please note, she has no strong background in CG. One topic could be something about Morphic, but what is it exactly? Or any other idea is welcome also.
Do you know many other environments where Morphic was applied successfully outside the Squeak niche? GTK 2 is a very popular GUI library (by far much more users than Morphic) and there is a ported implementation for GNU Smalltalk: http://bioskop.fr/gtk_tutorial/ And there are some starting points for Squeak here: http://squeakgtk.pbworks.com/w/page/10714189/FrontPage http://blog.summer.squeak.org/2008/05/introduction-to-squeak-gtk-project.htm... Or even better, you may try Qt, some initiatives and comments exists for other Smalltalks: https://github.com/thephred/gst-qt http://www.cincomsmalltalk.com/userblogs/runarj/blogView?showComments=true&p... Best regards, Hernán
And one more thing: our university imposes some additional requirements thus not every practically useful topic can be accepted, I'll have to select so more ideas is better.
TIA for any help.
Best regards, Dennis Schetinin
participants (7)
-
Denis Kudriashov -
Dennis Schetinin -
dimitris chloupis -
Goubier Thierry -
Hernán Morales Durand -
Igor Stasenko -
phil@highoctane.be