> > What is Cairo-Sparta ? What is the difference with Athens ? Sparta-Canvas is just an implementation of Athens API that uses Cairo as backend. It is the same as Athens-Cairo, with a few small differences.
- Sparta has different meaning of clipBy: during: In Athens clipBy: only accepts a Rectangle, in Sparta it is an arbitrary Path. - Sparta has some experimental api just for fun and to find out if there is a way to render faster. Since Athens is used in (many?) external packages it is not possible to redefine clipBy: . Also having a separate implementation of Athens API (Sparta-Cairo) allows developers of Bloc to iterate faster and save time on integration process. Cheers, Alex On Tue, Jun 21, 2016 at 3:46 PM, Aliaksei Syrel <[email protected]> wrote: > Can we change the fonts in Bloc ? > > > Bloc is not new Pharo :) It is also not Morphic. Bloc is very low level > engine that does not have theme and widgets. > Morphic apps (like Nautilus) are just running in compatibility mode and > are rendered on Athens canvas. Existing Pharo applications use fonts > provided by StandardFonts that can be changed from Menu > Settings. > > Cheers, > Alex > > On Tue, Jun 21, 2016 at 3:42 PM, Aliaksei Syrel <[email protected]> > wrote: > >> When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid Layout, >>> I find the following license: >> >> >> It is important to mention that Grid is more general than Table layout. >> It allows developers to create complex UI with less nested elements >> compared to the case when Table layout would be used instead. Reducing >> amount of nested/composed elements leads to performance boost (we have less >> elements in the tree) and reduces overall complexity - no need to use >> "hack" elements that have no intent and not part of real UI. >> >> Since Grid requires more complex (compared to table) computations we >> should take care about performance. General complexity of algorithm to >> compute distribution of cell sizes is O(n^2) - too much. Google already >> invested time (money) in this problem and developed a special case >> algorithm with linear complexity. It is used in Grid layout in bloc which >> means that we have a derivative work and need to ship original licence. >> >> Here is google's documentation: >> >> >>> Bellman-Ford variant - modified to reduce typical running time from >>> O(N^2) to O(N) >>> GridLayout converts its requirements into a system of linear constraints >>> of the >>> form: >>> x[i] - x[j] < a[k] >>> >> >> >>> Where the x[i] are variables and the a[k] are constants. >>> For example, if the variables were instead labeled x, y, z we might have: >>> x - y < 17 >>> y - z < 23 >>> z - x < 42 >>> >> >> >>> This is a special case of the Linear Programming problem that is, in >>> turn, >>> equivalent to the single-source shortest paths problem on a digraph, for >>> which the O(n^2) Bellman-Ford algorithm the most commonly used general >>> solution. >> >> >> Apache 2.0 is compatible/can be used with MIT - as far as I can tell >> according to answers on Internet. Maybe a layer can answer more correctly. >> >> Cheers, >> Alex >> >> >> On Tue, Jun 21, 2016 at 3:06 PM, Aliaksei Syrel <[email protected]> >> wrote: >> > >> > Hello Clement >> > >> > restoreAfter: is not only for transformation. It also restores clipping >> - that is why we need restoreAfter. (uses push and pop state). Having that >> clipping region is an arbitrary path there is no way to avoid pop and push >> state - which costs a lot in Cairo. It is slow because Cairo and Athens are >> statefull - which is bad for rendering a composition of arbitrary elements. >> > >> > Right now there is a huge work going on new Sparta - it will be almost >> stateless and will support a wide variety of backends (Cairo, Skia, >> CoreGraphics and so on). >> > Current Sparta-Cairo is an experiment which goal was to support >> clipping by arbitrary path. We learned that it is slow because of >> statefullness. >> > >> > In order to fill a square with color we have to perform the following >> ffi native calls: >> > - set color >> > - set shape >> > - fill >> > >> > Even in the most simple case we need 3 calls. When it gets more >> complicated there are even more calls. Preparing drawing context with >> multiple calls to perform an operation is a consequence of statefullness. >> > >> > Modern browsers use stateless canvases to render content. Idea is >> simple: one call per drawing operation. Example above would look like: >> > - fillPath(aPath, aPattern, drawOptions). >> > That is it. >> > Second benefit is that we don't need to care about shared state between >> drawing operations, no more push/pop state and as result huge performance >> boost. >> > >> > Cheers >> > Alex >> > >> > On Jun 21, 2016 1:34 PM, "Clément Bera" <[email protected]> wrote: >> >> >> >> Hi, >> >> >> >> Thanks Doru it now works for me ! Very exciting indeed. >> >> >> >> I have a few questions: >> >> >> >> 1. In Pharo the World menu is accessed through left-click and >> right-click provides the world contents. In Bloc, right-click displays the >> world menu and left-click does nothing. Is it expected / some design choice >> or just convenience for debugging ? At first glance I thought Bloc didn't >> work because I was left-clicking like in Pharo. >> >> >> >> 2. Can we change the fonts in Bloc ? >> >> >> >> 3. When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid >> Layout, I find the following license: >> >> >> >> Copyright (C) 2011 The Android Open Source Project >> >> >> >> Licensed under the Apache License, Version 2.0 (the "License"); >> >> you may not use this file except in compliance with the License. >> >> You may obtain a copy of the License at >> >> >> >> http://www.apache.org/licenses/LICENSE-2.0 >> >> >> >> Unless required by applicable law or agreed to in writing, software >> >> distributed under the License is distributed on an "AS IS" BASIS, >> >> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> >> See the License for the specific language governing permissions and >> >> limitations under the License. >> >> >> >> Does it mean Bloc is not under MIT ? Or is it completely unrelated ? >> >> >> >> 4. What is Cairo-Sparta ? What is the difference with Athens ? >> >> >> >> 5. It seems that the normal Pharo image in idle spends between 4 and >> 5% of execution time in the Morphic process, while in Bloc it seems that >> between 17 and 23% of execution time is in the main bloc loop >> (BlBoostedMainLoopManager). Isn't that a lot ? >> >> - It's interesting to see that 28% of execution time spent in Bloc is >> in BlSpartaCanvas>>#restoreAfter:. In the 2D video games I wrote (both >> using Cairo and Javascript canvas) I avoided using #restoreAfter: and >> instead in method such as BlSpartaCanvas >>#transform:during: I used a >> reverse transformation to restore the state. I am wondering if that's >> possible in large graphic framework like Bloc, that would save a quarter of >> the time. Maybe it's possible only in simple 2D video games. >> >> - Aside from restoreAfter, there is no obvious ways on how to save >> time... >> >> >> >> Well keep up the good work. >> >> >> >> >> >> >> >> On Tue, Jun 21, 2016 at 11:36 AM, Tudor Girba <[email protected]> >> wrote: >> >>> >> >>> Hi, >> >>> >> >>> Thanks for looking at it. >> >>> >> >>> You have to first switch to the Bloc space: >> >>> >> >>> World Menu / Bloc / Switch to Bloc >> >>> (I think there is a problem right now with OS-Window) >> >>> >> >>> Then, from Nautilus, you can pick an example and Inspect >> Return-Values to get the object. >> >>> >> >>> Cheers, >> >>> Doru >> >>> >> >>> >> >>> >> >>> On Jun 21, 2016, at 10:42 AM, Clément Bera <[email protected]> >> wrote: >> >>> >> >>> Hi Doru, >> >>> >> >>> Ok I understand I have issues keeping comments updated in my projects >> too :-). Do your best. >> >>> >> >>> I tried to run the examples from Bloc-Core-Examples but they didn't >> work. I downloaded the latest Pharo-Spur32 VM from files.pharo.org and >> retried and it still didn't work. >> >>> >> >>> How can I have the examples running ? >> >>> >> >>> Here is the errors I have for the first two examples of >> BlExampleElementWithBorderAndFill. >> >>> >> >>> <Screen Shot 2016-06-21 at 10.40.39 AM.png> >> >>> >> >>> Here are the examples: >> >>> >> >>> <Screen Shot 2016-06-21 at 10.37.49 AM.png> >> >>> >> >>> >> >>> Best, >> >>> >> >>> Clement >> >>> >> >>> On Tue, Jun 21, 2016 at 10:09 AM, Tudor Girba <[email protected]> >> wrote: >> >>> Hi Clement, >> >>> >> >>> Thanks for looking at it. >> >>> >> >>> Indeed, there aren’t many comments. A large part of the engine got >> rewritten twice over the last months, and many of the previous comments >> were no longer up to date. >> >>> >> >>> And no, the policy is not to not write comments :), but right now the >> priority is on building examples. which you will find in the >> Bloc-Core-Examples classes and their subclasses. >> >>> >> >>> Cheers, >> >>> Doru >> >>> >> >>> >> >>> >> >>> > On Jun 21, 2016, at 9:39 AM, Clément Bera <[email protected]> >> wrote: >> >>> > >> >>> > Hi Doru, >> >>> > >> >>> > I downloaded the image, opened Nautilus, clicked on the package >> named 'Bloc-Core' and all the classes I can see have no class comments (See >> screenshot below). Is there a 'No class comment' policy in Bloc ? Or maybe >> the top classes shown are just non representative of the class comments of >> the overall framework. >> >>> > >> >>> > <Screen Shot 2016-06-21 at 9.33.31 AM.png> >> >>> > >> >>> > On Tue, Jun 21, 2016 at 7:42 AM, Tudor Girba <[email protected]> >> wrote: >> >>> > Hi, >> >>> > >> >>> > Here is a brief update on the status of Bloc. >> >>> > >> >>> > Several of us came together to form a team and work to see Bloc in >> Pharo 6 at least as a preview. The team communication happens via Slack in >> a dedicated team, and the goal is to have regular progress/feedback >> communication on this mailing list. >> >>> > >> >>> > Just because we have a dedicated team does not mean that your >> feedback is important. In fact, over the last months, Bloc was redesigned >> again to include the feedback we got here. So, now we have: >> >>> > - Element is responsible for drawing (no more shape) >> >>> > - Interaction area and clipping area are now distinct >> >>> > >> >>> > You can find the current build on top of Pharo 6 here: >> >>> > >> https://ci.inria.fr/moose/job/bloc/PHARO=alpha,VERSION=development,VM=vmLatest/ >> >>> > >> >>> > The current team focus goes like this: >> >>> > - Alain is looking at events, >> >>> > - Glenn is playing with creating new elements in Bloc and >> refactoring the way we can manage , >> >>> > - Alex (Syrel) and Esteban are working on the backend to make >> rendering faster, >> >>> > - Doru is pretending to do something useful. >> >>> > >> >>> > Cheers, >> >>> > Doru >> >>> > >> >>> > >> >>> > -- >> >>> > www.tudorgirba.com >> >>> > www.feenk.com >> >>> > >> >>> > "What we can governs what we wish." >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >> >>> -- >> >>> www.tudorgirba.com >> >>> www.feenk.com >> >>> >> >>> "Presenting is storytelling." >> >>> >> >>> >> >>> >> >>> >> >>> -- >> >>> www.tudorgirba.com >> >>> www.feenk.com >> >>> >> >>> "Problem solving should be focused on describing >> >>> the problem in a way that makes the solution obvious." >> >>> >> >>> >> >>> >> >>> >> >>> >> >> >> > >
