[liblouis-liblouisxml] Re: Expanding the typeforrm parameter

  • From: Michael Whapples <mwhapples@xxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Wed, 16 Oct 2013 00:36:35 +0100

I would have thought though doing what you suggest causes longer term pain as its certainly not the most obvious, natural or cleanest way to implement such a feature.


Good design probably requires less modification in the future and so is possibly the best protection for long periods of backwards compatibility.

Also if the data types of the typeform array was an alias of the primitive data type, it would still be backwards compatible when you increase the data type size (eg. int to long int) wouldn't it? It would be like how widechar can have different widths.

Upgrading to a new API is something one only needs to do once, dealing with the API is something one needs to do every time writing or maintaining code which uses the API. Therefore I would put more emphasis into ensuring the API is good to use.

Having a mode bit which changes the meaning of a parameter to me sounds horrible and I am unconvinced on the future proof of this approach.

Michael Whapples
On 15/10/2013 20:08, John J. Boyer wrote:
Good points about design. However, 16 typeform bits, with 4 reserved for
existing emphasis types seems enough for any reasonable document. We
must also preserve backward compatibility. It should not be broken
unless there is a very good reason for it. This is the reason for
retaining both the typeform and spacing parameters as character arrays
and using an additional mode bit to turn on extended typeform handling
and use of the scripting language.

John

On Tue, Oct 15, 2013 at 05:56:38PM +0000, Ken Perry wrote:
You say we don't have to worry about it for a while.  The thing is when you 
spend 90% of your time in design you only need to spend 10% of your time in 
coding.  If we just say hey we won't need this for a while that is not design 
based coding and will mean in the long run we will spend more time trying to 
fix a limitation like not having enough spots. This is the time we should code 
for the future so that when we hit that limitation we don't have to spend a 
year trying to find a way to make everyone happy who are now used to using the 
char based limited binary field.

Ken

Ken

-----Original Message-----
From: liblouis-liblouisxml-bounce@xxxxxxxxxxxxx 
[mailto:liblouis-liblouisxml-bounce@xxxxxxxxxxxxx] On Behalf Of John J. Boyer
Sent: Tuesday, October 15, 2013 1:49 PM
To: liblouis-liblouisxml@xxxxxxxxxxxxx
Subject: [liblouis-liblouisxml] Re: Expanding the typeforrm parameter

Well, 12 is a lot. I don't think we have to worry about it for a while.
Also, the bits can be ored together, as for combined bold and italic emphasis.

John

On Tue, Oct 15, 2013 at 03:04:21PM +0000, Ken Perry wrote:
My only concern here is how expandable will this be in the future if for 
example there turns out to be more than 12 needed?

Ken

-----Original Message-----
From: liblouis-liblouisxml-bounce@xxxxxxxxxxxxx
[mailto:liblouis-liblouisxml-bounce@xxxxxxxxxxxxx] On Behalf Of John
J. Boyer
Sent: Monday, October 14, 2013 7:09 AM
To: liblouis-liblouisxml@xxxxxxxxxxxxx
Subject: [liblouis-liblouisxml] Expanding the typeforrm parameter

Let me know if you have comments on the folowing.

At present the typeform parameter can handle only four kinds of emphasis, bold, 
italic, underline and computer Braille. Although this parameter is a character 
array the high-order bits are used for the ascii numeric code, -x30. This is 
because at the beginning loblouis functions were called from Visual Basic.

However, four types of emphasis are not enough to handle the Braille indicators 
required by modern textbooks, where it may be necessary to indicate colored 
type, script, etc.

Therefore, I am proposing to use all eight bits of the typeforrm parameter. To 
preserve backward compatibility an additional bit in the mode parameter will be 
defined, extTypoeform . Since the spacing parameter is used only by ViewPlus 
and they may stop using it, I propose to make it an extension of the typeform 
parameter. This will provide 12 additional ways to indicate things in the text. 
It will also be controlled by the extTypeform bit.

The present system of defining opcodes for things like beginning of phrase, end 
of phrase, etc for each type of emphasis is unworkable for an extended typeform 
parameter because it would result in a huge number of opcodes.

The present algorithm for handling Braille indicators cannot be expanded for 
the same reason. Therefore, the correct-context-multipass feature will be 
extended with a scripting language. The base of this language already exists.

John

--
John J. Boyer; President, Chief Software Developer Abilitiessoft, Inc.
http://www.abilitiessoft.com
Madison, Wisconsin USA
Developing software for people with disabilities

For a description of the software, to download it and links to project
pages go to http://www.abilitiessoft.com For a description of the
software, to download it and links to project pages go to
http://www.abilitiessoft.com
--
John J. Boyer; President, Chief Software Developer Abilitiessoft, Inc.
http://www.abilitiessoft.com
Madison, Wisconsin USA
Developing software for people with disabilities

For a description of the software, to download it and links to project pages go 
to http://www.abilitiessoft.com
For a description of the software, to download it and links to
project pages go to http://www.abilitiessoft.com

For a description of the software, to download it and links to
project pages go to http://www.abilitiessoft.com

Other related posts: