>
> 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."
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>
>>
>
>

Reply via email to