<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/abccairo/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/abccairo/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 17 Mar 2022 20:04:51 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/abccairo/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Discussion for Home page</title><link>https://sourceforge.net/p/abccairo/wiki/Home/?limit=25#900c</link><description>&lt;div class="markdown_content"&gt;&lt;h2 id="changes-in-the-latest-release"&gt;Changes in the latest release&lt;/h2&gt;
&lt;p&gt;The latest release of abcCairo fixes some bugs, but also&lt;br/&gt;
re-arranges the code to work in a slightly different way.&lt;/p&gt;
&lt;p&gt;The original abcm2ps source code buffers up its output as&lt;br/&gt;
it goes along and writes out the buffer later at critical&lt;br/&gt;
moments. As the buffer is written, symbols are placed&lt;br/&gt;
relative to certain positions on the stave, and only when a whole&lt;br/&gt;
line of music has been processed can we work out where&lt;br/&gt;
the stave needs to be placed so that the current line of&lt;br/&gt;
music doesn't collide with the previous one.&lt;br/&gt;
Thus a whole lot of PostScript graphics&lt;br/&gt;
calls are generated, but these ultimately rely on a&lt;br/&gt;
variable whose value is not calculated until later, at&lt;br/&gt;
which point the PostScript to set the variable can be&lt;br/&gt;
generated and written to the file, followed by all the&lt;br/&gt;
commands making use of that variable.&lt;/p&gt;
&lt;p&gt;The buffering mechanism is an ingenious solution which&lt;br/&gt;
works with PostScript, but doesn't work when you are&lt;br/&gt;
writing graphics directly to a screen (or canvas in the&lt;br/&gt;
terminology of the Cairo library), because you need to&lt;br/&gt;
have all the position information at the point when you&lt;br/&gt;
draw a graphical element. I had to replace this mechanism to get &lt;br/&gt;
abcCairo to work. &lt;/p&gt;
&lt;p&gt;One common way to deal with this sort&lt;br/&gt;
of problem is to construct a data structure to represent&lt;br/&gt;
whatever you want to write and only write it out when you&lt;br/&gt;
have all the information you need.&lt;br/&gt;
The abcCairo code uses a different approach. There are two&lt;br/&gt;
passes through the abc. On the first pass, the position of&lt;br/&gt;
each stave is calculated and stored. On the second pass&lt;br/&gt;
these stave positions are retrieved so that we have all the&lt;br/&gt;
information to write graphics to the right place.&lt;/p&gt;
&lt;p&gt;This makes it possible to write individual image files for&lt;br/&gt;
each abc tune. However, when we are writing to pages of&lt;br/&gt;
PostScript, there is additional logic to make sure that as&lt;br/&gt;
far as possible tunes are never broken across page boundaries.&lt;br/&gt;
The original abcm2ps code again used the buffering technique&lt;br/&gt;
to handle this. The current release uses a third pass to&lt;br/&gt;
remove any need for buffering. This has resulted in the&lt;br/&gt;
code in buffer.c being simplified. New code in page_manager.c&lt;br/&gt;
handles the placing of tunes onto pages. This will make it&lt;br/&gt;
possible to generate images of pages rather of individual&lt;br/&gt;
tunes at a later date.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Allwright</dc:creator><pubDate>Thu, 17 Mar 2022 20:04:51 -0000</pubDate><guid>https://sourceforge.net6de4c603c23b9ca1cf4f374f884d1586c4e27abf</guid></item><item><title>Home modified by James Allwright</title><link>https://sourceforge.net/p/abccairo/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Welcome to your wiki!&lt;/p&gt;
&lt;p&gt;This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: &lt;span&gt;[SamplePage]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The wiki uses &lt;a class="" href="/p/abccairo/wiki/markdown_syntax/"&gt;Markdown&lt;/a&gt; syntax.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;h6&gt;Project Members:&lt;/h6&gt;
	&lt;ul class="md-users-list"&gt;
		&lt;li&gt;&lt;a href="/u/jamesa13/"&gt;James Allwright&lt;/a&gt; (admin)&lt;/li&gt;
		
	&lt;/ul&gt;&lt;br/&gt;
&lt;p&gt;&lt;span class="download-button-60831ad89dc907af9e1f5de9" style="margin-bottom: 1em; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Allwright</dc:creator><pubDate>Fri, 23 Apr 2021 19:07:04 -0000</pubDate><guid>https://sourceforge.netc0896f8f4c1ed6fbaf5133fac14a797e869a256c</guid></item></channel></rss>