File: ChangeLog.release

package info (click to toggle)
lasi 1.1.3-2.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,756 kB
  • sloc: cpp: 1,360; javascript: 139; sh: 20; makefile: 13
file content (743 lines) | stat: -rw-r--r-- 34,160 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
------------------------------------------------------------------------
r220 | airwin | 2019-01-30 23:10:35 -0800 (Wed, 30 Jan 2019) | 10 lines
Changed paths:
   M /trunk/README.Release_Manager_Cookbook

Update to the lastest version of the instructions for the release manager

This file should reflect the actual commands and actual results of
those commands for this release.  And it is up to date in that regard
for what has gone on so far in this release.  However, in case there
are a few further tweaks necessary in the description of the commands
in the rest of the release process, then this file should be updated
again to reflect those changes just after the release.


------------------------------------------------------------------------
r219 | airwin | 2019-01-30 12:38:40 -0800 (Wed, 30 Jan 2019) | 8 lines
Changed paths:
   M /trunk/README.cumulated_release
   M /trunk/README.release

Finalize release notes for the forthcoming release of libLASi-1.1.3

As part of this change, I have prepended README.release into
README.cumulated_release so if there are any added tweaks after this
before the libLASi-1.1.3 release both README.release and
README.cumulated_release should be tweaked in the same way.


------------------------------------------------------------------------
r218 | airwin | 2019-01-29 22:26:05 -0800 (Tue, 29 Jan 2019) | 10 lines
Changed paths:
   D /trunk/CONCATENATED_README.release
   A /trunk/README.cumulated_release (from /trunk/CONCATENATED_README.release:217)

Rename CONCATENATED_README.release => README.cumulated_release

This new name for this cumulation of release notes follows how
this file is named in PLplot.

Note, before making this name change I double-checked that
this file contained all recent release notes up to and
including the last (1.1.2) release.


------------------------------------------------------------------------
r217 | airwin | 2019-01-29 19:30:55 -0800 (Tue, 29 Jan 2019) | 18 lines
Changed paths:
   M /trunk/README
   M /trunk/cmake/modules/lasi_version.cmake

Bump package version from 1.1.2 to 1.1.3 and library SOVERSION from 1 to 2 in anticipation of the 1.1.3 release

The bump in just the patch number of the package version reflects that
only maintenance and no new development has occurred for this release.
However, that maintenance did involve necessary but relatively minor
backwards-incompatible changes to the libLASi API (a change in the
PostscriptDocument::GlyphId::GlyphId protected method API that is
designed for internal use only and the addition of the
PostscriptDocument::PangoItem_do protected method that is also
designed for internal use only).

As a result of these backwards incompatibilities, the library
SOVERSION had to be bumped from 1 to 2 to force users of this library
(e.g., the PLplot psttf device driver) to do the required
recompilations for this case.  However, there is no need for users to
actually change their source code to adjust to these backwards
incompatibilities.

------------------------------------------------------------------------
r216 | airwin | 2019-01-29 18:38:11 -0800 (Tue, 29 Jan 2019) | 36 lines
Changed paths:
   M /trunk/examples/CMakeLists.txt
   A /trunk/examples/ComplexTextLayoutExample.png
   D /trunk/examples/Example_1_Result.png
   D /trunk/examples/Example_2_Result.png
   M /trunk/examples/Makefile.examples.in
   A /trunk/examples/MissingGlyphExample.png
   A /trunk/examples/SimpleLASiExample.png

Reorganize how examples are built and run and replace old PNG snapshots with new ones

All references to a numerical "example[0-2]" core name style for
example applications and results have now been replaced by the more
descriptive core names MissingGlyphExample, SimpleLASiExample, and
ComplexTextLayoutExample.  This core name change also makes the names
of example applications and results consistent with the name of the
source code used for each of the examples.

These examples now do the appropriate bounding-box calculations so the
results for all three of these examples are now in valid EPS
(Encapsulated PostScript) format.  Accordingly the suffix of the
results of these applications has been changed from ".ps" to ".eps".
(This change in suffix is necessary before inkscape will honor the
bounding boxes.)

The new PNG snapshots generated by inkscape (now automatically
calculated in the build tree as a result of building the "all" target)
are much higher quality than the previous decade-old snapshots because
(i) pango is much more advanced than it was a decade ago, (ii) Linux
fonts are much better than they were a decade ago, and (iii) inkscape
does a better job of converting to PNG format than whatever (likely
commercial) application was used for such conversion a decade ago.
Accordingly I have removed the old PNG results from the examples
subdirectory of the source tree and replaced them with the current
build-tree results (on the Debian Testing platform) for
MissingGlyphExample.png, SimpleLASiExample.png, and
ComplexTextLayoutExample.png

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by following all the shared library and static
library build-tree and installed examples tree test steps documented
in a local variation of README.Release_Manager_Cookbook that will soon
be committed.  All these tests passed without any issues.


------------------------------------------------------------------------
r215 | airwin | 2019-01-29 18:11:58 -0800 (Tue, 29 Jan 2019) | 4 lines
Changed paths:
   M /trunk/CMakeLists.txt
   M /trunk/src/CMakeLists.txt

Insert copyright notice in CMakeLists.txt and  src/CMakeLists.txt

In addition I fixed a CMake version number typo in the CMakeLists.txt comments.

------------------------------------------------------------------------
r214 | airwin | 2019-01-29 18:08:50 -0800 (Tue, 29 Jan 2019) | 2 lines
Changed paths:
   M /trunk/examples/README

Substantial update of the documentation of the examples

------------------------------------------------------------------------
r213 | airwin | 2019-01-25 12:57:27 -0800 (Fri, 25 Jan 2019) | 85 lines
Changed paths:
   M /trunk/include/LASi.h
   M /trunk/src/psDoc.cpp

Make glyph names have a one-to-one relationship with glyphs

This change to the glyph name (for the uncommon but not rare case when
FT_HAS_GLYPH_NAMES(face) is false for a given font) changes the glyph
name calculated by the nameof static function from

LASi_glyph_<unique number>

where unique number was incremented every time nameof was called

to

LASi_glyphU+<UCS4 hexadecimal code for the glyph>.

with a fallback to the unique number name approach if the UCS4 hexadecimal code for the glyph
could not be determined for some reason.

This change to the UCS4 version means there is now a one-to-one
relationship between unique glyph name and glyph.  This has several
advantages:

* The unique glyph name is always the same for the same glyph
  regardless of the order in which glyphs are encountered in strings.
  This improvement eliminated the PLplot differences due to different
  glyph names between octave results (calculated for all our standard
  Octave examples with just one octave session) and C results
  (calculated with a separate application for each of our standard C
  examples).

* When bounding-boxes are calculated using the get_dimensions method
  and text renderered with the show command, nameof is called twice
  with the same glyph.  For that case, the unique number approach
  calculated two different glyph names for the same glyph resulting in
  redundant glyph functions (with different unique number names but
  same contents) being stored in the PostScript header.  That libLASi
  misfeature has been eliminated with the new UCS4 glyph naming
  approach.

* The new version of the glyph names contains the UCS4 information for
  the glyph which allows users to understand (with the aid of
  applications such as gucharmap) exactly which glyph their
  application was asking to be rendered.  This additional glyph
  information is quite useful when debugging results.

The implementation of this change required copying (with a small
adaptation) the C-style static function utf8_to_ucs4 from
PLplot as allowed by the LGPL license for PLplot.  This change also required
the following backwards incompatibility to the libLASi API

-          GlyphId(FT_Face, const FT_UInt);
+          GlyphId(FT_Face, const FT_UInt, uint32_t unichar);

Since this is a protected method that is normally only used internally
it is anticipated that few if any libLASi users will have to actually
change their code due to this change.  (For example, this is the case
for PLplot which depends completely on libLASi for its psttf device
driver implementation.)  However, all libLASi users will have to
recompile their code due to this change so to force that I plan to
bump the SONAME for the libLASi library (as usual for any
backwards-incompatible change) before the forthcoming release
of the libLASi software.

Tested by: Alan W. Irwin <airwin@...> on Linux
(Debian Testing) by configuring libLASi, building it with "make", and
testing it with "ctest --verbose". The results for all three examples
continued to look good.  And the redundant glyph functions in the
PostScript headers are now eliminated with the UCS4 codes double-checked
with gucharmap for example 2 in a couple of cases.

Further PLplot test:

I installed this updated liblasi library and configured a PLplot build to use that
installed version for its psttf device driver and also specified -DPLPLOT_TEST_DEVICE=psttfc
to use that device for the test_diff_device target. I built that target
(which compares psttfc results for all examples written in all our supported languages).
The test_diff_device report was perfect, i.e., the octave differences that occurred before
because of different glyph function names in the header are now gone.  In addition,
the triple redundancy (presumably because that device calls bounding box twice) in
glyph functions is now also gone.

In sum, this change has nicely eliminated a number of minor (because
FT_HAS_GLYPH_NAMES(face) is false only for relatively few fonts)
libLASi issues.


------------------------------------------------------------------------
r212 | airwin | 2019-01-24 02:32:58 -0800 (Thu, 24 Jan 2019) | 121 lines
Changed paths:
   M /trunk/examples/MissingGlyphExample.cpp
   M /trunk/include/LASi.h
   M /trunk/src/psDoc.cpp

Work around libLASi issue that occurs when pango chooses pure bitmapped fonts

An example of such a pure bitmapped font is the popular Noto Color
Emoji. For glyphs such as "Unicode U+2648 ARIES: ♈", pango
(presumably due to the default configuration of fontconfig on my
Debian Testing system) chooses this font to render this glyph (and some
other fairly common glyphs as well).  Of course, this font is incompatible with libLASi since
that library can only use scalable outline fonts rather than bitmapped
ones.

The (DEBUG) result for this incompatible pango choice was

FT_Load_Glyph is returning error = 24 for a glyph index of 52 associated with the substring ♈♈

where 24 (see
<https://www.freetype.org/freetype2/docs/reference/ft2-error_code_values.html>)
corresponds to "Invalid_Size_Handle" which I assume means simply that
pure bitmapped fonts cannot be scaled (one of the font attributes that
libLASi obviously needs).  Prior to this commit, the libLASi response
for any FT_Load_Glyph error was to try again with a glyph index of 0
(normally used to obtain the default replacement glyph for the type
face).  But, of course, the exact same error as above is obtained for
this glyph index as well for Noto Color Emoji.  Therefore, the result
of this glyph index 0 error condition was libLASi aborted which is not
an acceptable result due simply to the overall popularity of Noto
Color Emoji.

Of course, this library abort can be avoided if fontconfig is
reconfigured to avoid bitmapped fonts or (almost equivalently) the
user uninstalls the Noto Color Emoji font package, but such
"solutions" are not acceptable in general because of the popularity of
this font for many other tasks where a bitmapped font is fine.

Ideally, the solution to this issue would be to ask pango to only
choose outline fonts, but I am not aware of any method of making such
a request of that library.  So unless or until such a method is
discovered (or developed) for the pango library, the only solution to
this issue is to find a libLASi workaround when the above glyph index
0 response to a FT_Load_Glyph error also errors out.

This commit implements such a workaround which is to substitute the
default replacement glyph for each glyph in the PangoItem
(corresponding to a run of characters that can all be rendered with a
font of fixed family, slant, weight, and width (but not size)).
whenever such an error is discovered for any glyph in a PangoItem.

The chosen emergency glyph is "\n" which experience shows reliably
forces the glyph index 0 code path which replaces that linefeed
with the default replacement glyph (normally an empty box).  So the
net result is the default replacement glyph is rendered now for all
error cases.

I have updated the explanatory text in MissingGlyphExample.cpp to be
consistent with this conclusion.

N.B. as part of this fix I transferred the PangoItem processing part
of the code in the for_each_glyph_do method (which is a misnomer since
it should really be called for_each_string_do) to a new
PostscriptDocument method called PangoItem_do.  This code
reorganization makes the code substantially easier to understand with
PangoItem_do doing most of the work, and for_each_glyph_do responding
to any errors reported by that method which it could not handle itself
with the glyph_index 0 code path.

Unfortunately this reorganization means the new routine PangoItem_do
must be a protected class method (rather than a simple C-style static
routine) because it uses protected data from the PostscriptDocument
class.  This change is a backward-incompatible change to libLASi.h and
the libLASi library which will require users of that library to
recompile their code against the changed libLASi.h.  However, this
backwards-incompatible change will not require them to actually change
their code.

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by configuring libLASi, building it with "make", and
testing it with "ctest --verbose".  The results for the "Missing
Glyphs" showed empty boxes (the expected default replacement glyph)
for both the missing glyphs and all (two) Aries glyphs associated
with a PangoItem font face where pango chose the Noto Color Emoji
font.

Further tests:

* I ran all three examples under valgrind with no memory management
  issues other than memory leaks reported.

* I installed this updated liblasi library and configured a PLplot build to use that
  installed version for its psttf device driver and also specified -DPLPLOT_TEST_DEVICE=psttfc
  to use that device for the test_diff_device target.  I built that target
  (which compares psttfc results for all examples written in all our supported languages).
  The test_diff_device report was clean except for

octave
  Missing examples            :  24
  Differing graphical output  : 
  Missing stdout              : 
  Differing stdout            : 

  which further investigation showed was simply an artifact of the octave calculation
  being done with one octave session so that the unique lasi_index number associated
  with broken fonts that fail the !FT_HAS_GLYPH_NAMES(face) test is different for
  octave compared to the C examples.

* I viewed all 33 C standard example results built as part of the test_diff_device
  target build using the gv PostScript viewer.  In all cases (except for example 7 where
  the signs of the zodiac came out as empty boxes because of the Noto Color Emoji choice
  by pango) the rendering of the examples looked good.

In sum the only issue I could find for any of these tests is
duplicated (due to bounding-box calculations) GlyphId's in those rare
cases where a font failed the !FT_HAS_GLYPH_NAMES(face) test.  That
duplication lead to redundant glyph information (with different
LASi_glyph_* titles but duplicate contents) being stored in the
headers of the PostScript results.  The only way to address this issue
is to not call GlyphId when bounding boxes are being calculated, but I
don't know how to implement such a test.  Furthermore, I judge this to
be a minor issue because relatively few fonts are sufficient broken to
fail the !FT_HAS_GLYPH_NAMES(face) test so I am going to live with
this issue.


------------------------------------------------------------------------
r211 | airwin | 2019-01-23 16:24:48 -0800 (Wed, 23 Jan 2019) | 31 lines
Changed paths:
   M /trunk/examples/MissingGlyphExample.cpp

Modify the "Missing Glyph" example again

In this case I replaced

-      "Unicode U+1878 MONGOLIAN LETTER CHA WITH TWO DOTS: ᡸ",
+      "Embedded newlines a\\nb\\nc: a\nb\nc",

because I have verified experimentally that inserting a newline
character (and presumably any other non-printing character) in the
character string generates a missing glyph condition that results in
the replacement glyph (normally an empty box) being substituted by the
libLASi code.  So this appears to be a much more reliable way
(compared to random unicode glyphs that happen not to be available now
but which will likely become available later) in the long run to test
the response of libLASi to missing glyphs.

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by configuring libLASi, building the all target,
running ctest, and verifying with gv that the resulting Encapsulated
PostScript file has substituted the missing glyph empty box for the
embedded newlines.

N.B. this test was done for a modified version of
examples/MissingGlyphExample.cpp where the Aries symbols were dropped.
Of course, with those symbols restored to the example as in this
commit, ctest errors out as before because of the attempt to use an
unsuitable pure bitmap font (Noto Color Emoji) to handle the Aries
glyph.  A solution to that remaining libLASi issue has been found but
it is not commit-ready yet (and it was not used for the present test).


------------------------------------------------------------------------
r210 | airwin | 2019-01-22 17:35:57 -0800 (Tue, 22 Jan 2019) | 87 lines
Changed paths:
   M /trunk/examples/MissingGlyphExample.cpp

Update "Missing Glyphs" example to provide more stringent tests of the libLASi library

One on-going testing issue with this example is Debian fonts are
constantly improving.  So in contrast to the Debian Jessie case,
Debian Testing provides all the glyphs for the previous version of
this example which therefore no longer tests libLASi's response to missing
glyphs.  So to address that issue (at least temporarily) I have added

"Unicode U+1878 MONGOLIAN LETTER CHA WITH TWO DOTS: ᡸ"

to the strings being rendered by this example.  This means this
example tests missing glyphs again for me since this glyph is missing
for the (extensive) set of Debian Testing font packages I currently
have installed.

One important libLASi defining characteristic is this library can only
use scalable outline fonts.  Until recently this has largely been only
a theoretical concern because fontconfig was typically set up to
prefer modern outline fonts over old-fashioned bitmapped fonts.
However, that all changed with the advent of the Noto Color Emoji
family of fonts which are high-quality pure *bitmapped* fonts suitable
for rendering the extraordinarily popular emojis.  Currently, for
Debian Testing at least, pango/fontconfig chooses this font over
suitable outline alternatives (likely because of that emoji
popularity), and there doesn't seem to be any way to overcome this
problem other than to remove the Noto Color Emoji font package, wait
for an outline version of that family of fonts to become available, or
(to express a really bad alternative) to configure fontconfig in one
way when using libLASi and another way when desiring emoji's for text
transmissions.

Also, pango/freetype does not appear to have any programming method to
force outline fonts to be chosen.  So going forward the plan is to
change libLASi to substitute blank glyphs for all glyphs in a
PangoItem where an error occurs (e.g., due to missing glyphs or a pure
bitmap font being chosen by pango for the PangoItem).  (Note a pango
item is associated with a sub-block of text that can be rendered with
a single font face, i.e., a group of fonts constrained to have the
same family, weight, slant, stretch and width but possibly varying
sizes).

To test this situation for the current libLASi, I have inserted in this
commit the test string

"Unicode U+2648 ARIES (twice): ♈♈"

where it turns out that pango currently selects the completely
unsuitable (from the libLASi perspective) pure bitmap font "Noto Color
Emoji" to represent those Aries symbols.  (This issue with the Aries
symbol was first discovered by PLplot comprehensive testing of the
psttf device driver which depends on libLASi.)

In addition, I have taken this opportunity to move from the "Arial"
font to the more generic "serif" font which presumably gives
fontconfig the same or even more freedom to choose the best font to
render a particular glyph.  And I have also changed all test strings
being rendered in this example to ones that describe themselves in
more detail, e.g.,

"Unicode U+0802: ࠂ"

was replaced by

"Unicode U+0802 SAMARITAN LETTER GAMAN: ࠂ"

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by configuring LASi (using the Debian Testing system
version (3.13.2) of cmake), building the "all" target, and running
ctest --verbose.  The result for this commit of the "Missing Glyphs"
example was as follows:

[...]
test 1
    Start 1: example0

1: Test command: /home/software/lasi_svn/HEAD/build_dir/examples/example0 "example0.ps"
1: Test timeout computed to be: 9.99988e+06
1: Error returned from FT_Load_Glyph
1/3 Test #1: example0 .........................***Failed    0.08 sec
[...]

A test with the previous version of this example produces no such
errors which confirms the new version of this example is a more
stringent test of libLASi.  N.B. this ctest error will continue until
the libLASi library can be changed as discussed above.


------------------------------------------------------------------------
r209 | airwin | 2019-01-22 15:52:19 -0800 (Tue, 22 Jan 2019) | 27 lines
Changed paths:
   M /trunk/src/drawGlyph.cpp
   M /trunk/src/psDoc.cpp

Replace deprecated lower-case variants of Freetype macro constants with preferred upper-case form

That is change libLASi references to ft_glyph_bbox_unscaled and
ft_glyph_format_outline with FT_GLYPH_BBOX_UNSCALED and
FT_GLYPH_FORMAT_OUTLINE.

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by configuring libLASi with the system version (3.13.2) of
cmake and building the libLASi library (with "make LASi") without
build errors.

Note the above deprecation of the lower-case form of the macro
constants was only noted by chance in documentation, and the actual
libLASi build continues to generate deprecation warnings due to other
long-standing issues.  Those issues (some of which have multiple
instances) are the following:

* "warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]"

* "warning: ‘PangoContext* pango_ft2_get_context(double, double)’ is deprecated: Use 'pango_font_map_create_context' instead [-Wdeprecated-declarations]"

* "warning: ‘FT_FaceRec_* pango_ft2_font_get_face(PangoFont*)’ is deprecated: Use 'pango_fc_font_lock_face' instead [-Wdeprecated-declarations]"

All of these are beyond my current C++ and pango skill level to fix so
help with cleaning up these deprecation warnings would be much appreciated!


------------------------------------------------------------------------
r208 | airwin | 2019-01-22 14:34:44 -0800 (Tue, 22 Jan 2019) | 77 lines
Changed paths:
   M /trunk/examples/ComplexTextLayoutExample.cpp
   M /trunk/examples/MissingGlyphExample.cpp

Add boundary boxes to the "Missing Glyph" and "Complex Text Layout" examples

This change was straightforward for the "Missing Glyph" case.

For the "Complex Text Layout" case, I implemented some generally
useful C++ code macros (called LASI_SHOW_AND_UPDATE_BB,
LASI_SCALED_SHOW_AND_UPDATE_BB, and LASI_ROTATED_SHOW_AND_UPDATE_BB),
which made it straightforward to handle even complex cases such as
anamorphic scaling and rotation of text.  For example, the
LASI_ROTATED_SHOW_AND_UPDATE_BB macro includes C++ code to apply the
rotation matrix to determine the x,y coordinates of the corners of the
rotated text box and use those corner coordinates to help determine
the overall bounding box.

In addition, for the "Complex Text Layout" case I reduced the font
size from 30 to 25 of the "UTHAITHANI IN THAI: อุทัยธานี" section of this
example to compensate for what appears to be a systematic increase
over the years (compared to previous screenshots of this example and
other lines of text in this example) in the font actually determined
by the Debian testing version of pango when the "Garuda" font is
specifically requested for this component.  A gucharmap experiment
with requesting this font with the Debian Testing package
fonts-tlwg-garuda-otf installed for the U+0E2D THAI CHARACTER O ANG
"อุ" indicates that "Garuda" is the font actually used in this case.
Which indicates this increase in size we are compensating for in this
commit is not an artifact of the wrong font being chosen.

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing).  In the "Missing Glyph" case the test was a simple
one (using gv to check the boundary box of the complete eps result).
But in the "Complex Text Layout" case, I locally reduced the example
(using #if 0 ... #endif) to individual components and used the simple
gv test to test the above macros were working correctly for each of
those individual components and additional significant variations of
those components.

One such detailed test was for the red-rectangle component.  By
looking at the eps result, I confirmed the resulting high-res boundary
box was identical with the path of the red rectangle implying that
applications paying strict attention to that high-res BB would split
the width of the line.  And the low-res BB was slightly (less than one
point in all cases which is small compared to the width of the line)
outside the hig-res BB.  So a similar conclusion can be drawn for
those applications paying attention to the low-res BB.

However, note there is a small but significant boundary-box issue with
the gv PostScript viewing application.  The position indicator for the
app appears to conform to the low-res BB (i.e., it shows no position
outside that BB), but the white background supplied by that app is not
aligned properly with that BB.  For example, the lower y value for
that white background is systematically too low (by a significant
number of points corresponding roughly to the width of the line)
relative to the BB, and the upper x value is systematically too large
by a similar amount.

A further detailed test was for the case of anamorphic scaling of text
for a number of different sequential text segments.  In all cases
(subject to the above minor issues with gv), the bounding box of the
composite set of all such text segments was calculated properly.

A final detailed test was for the rotated text component where I used
sequential text rotated by various increments to prove each text
segment was continuous with the previous one and rotated properly.
Also, I confirmed for all these different rotation tests (subject to
the above minor issues with gv), that in all cases (including one that
had overall rotation angles in all quadrants) the bounding box of the
composite set of all rotated text segments was calculated properly.

Of course, after all those individual detailed component tests were
completed, I changed the "Complex Text Layout" example to the present case where each component
updates if necessary (i.e., if the component BB is larger in any dimension
than the overall boundary box calculated for previous components) the overall
bounding box.  And a simple gv test shows that entire result looks good
including an appropriate overall bounding box (subject to the
above minor issue with gv).


------------------------------------------------------------------------
r207 | airwin | 2019-01-22 11:39:08 -0800 (Tue, 22 Jan 2019) | 9 lines
Changed paths:
   M /trunk/src/psDoc.cpp

Fix minor boundary box issue

The low-resolution (integer) boundary box was being calculated by
taking the floor of all high-resolution (double) boundary box limits.
This commit changes that to the floor of the high-resolution lower
limits and the ceil of the high-resolution upper limits so that low
resolution bounding-box limits are always outside the high-resolution
limits, but with the difference always less than one point.

------------------------------------------------------------------------
r206 | airwin | 2019-01-10 18:20:41 -0800 (Thu, 10 Jan 2019) | 26 lines
Changed paths:
   M /trunk/Doxyfile.developer
   M /trunk/Doxyfile.user

Update doxygen configuration files from doxygen version 1.8.1.2 to 1.8.13

These conversions were done using

doxygen -u Doxyfile.developer
doxygen -u Doxyfile.user

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by running (from an initially empty build tree and
with the Debian Testing 3.13.2 version of CMake)

cmake -DCMAKE_INSTALL_PREFIX=/home/software/lasi_svn/install -DBUILD_SHARED_LIBS=ON ../lasi_2019 >& cmake.out
# To remove previously generated doxygen results in the source tree.
make clean >& clean.out
make all >& all.out

with no doxygen build issues other than one @param warning that the
parameter mapval does not occur in the argument list for
PostscriptDocument::accrue_dimensions.  Since mapval does appear in
this argument list, this warning can only be explained by some doxygen
C++ code-parsing failure.

In addition, I skimmed the generated results at doc/developer/html
and doc/user/html/ with firefox, and all seemed well.


------------------------------------------------------------------------
r205 | airwin | 2019-01-10 17:16:23 -0800 (Thu, 10 Jan 2019) | 24 lines
Changed paths:
   M /trunk/CMakeLists.txt

Bump (or shove hard in this case) the minimum version of CMake from 2.8.9 to 3.13.2

This change is motivated by the bug fixes in later CMake versions and
also the much better checking of the build system that occurs for the
policies automatically used for 3.13.2.  That said, it is a tribute to
the robustness of the current libLASi build system and the backwards
compatibility of CMake that there were absolutely no build-system
warnings either before or after this change.

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux
(Debian Testing) by running (from an initially empty build tree and
with the Debian Testing 3.13.2 version of CMake)

cmake -DCMAKE_INSTALL_PREFIX=/home/software/lasi_svn/install -DBUILD_SHARED_LIBS=ON ../lasi_2019 >& cmake.out
make
ctest

with no issues other than outdated Doxygen configuration files (which
will be the subject of the next commit).





------------------------------------------------------------------------
r204 | airwin | 2015-05-20 18:14:08 -0700 (Wed, 20 May 2015) | 45 lines
Changed paths:
   M /trunk/src/CMakeLists.txt

Build system: set target property POSITION_INDEPENDENT_CODE ON for the libLASi library

This change allows shared libraries from foreign software (e.g.,
PLplot) to link to the static version of libLASi. The cost of this
gain is there is a small amount of inefficiency (e.g., the more
complicated addressing code that apparently occurs on Linux for all
code compiled with the -fPIC flag) introduced for the static libLASi
library.

Tested by Alan W. Irwin <airwin@users.sourceforge.net> on Linux
using the following procedure (which is normally used for testing
changes to libLASi):

cd /home/software/lasi_svn/HEAD/build_dir
# Remove build tree and install tree
rm -rf /home/software/lasi_svn/HEAD/build_dir/* /home/software/lasi_svn/install

# Configure libLASi build, test, and install
# (Note change from normal procedure where we have specified building
# a static version of libLASi.)
cmake -DCMAKE_INSTALL_PREFIX=/home/software/lasi_svn/install \
-DBUILD_SHARED_LIBS=OFF ../lasi_allura >& cmake.out

# Check results
less cmake.out

# Build and install
make -j4 install >& install.out

# Check results
less install.out

# Test
ctest

I then followed up with a comprehensive test of PLplot where this
static libLasi library was fine for the shared library case for that
build (both with and without dynamic devices).  However, under these
conditions the traditional PLplot static build had some (missing
stdlib++) difficulties with the mixed Fortran, C++, and C case.  This
is expected and unfortunately there is no easy cure.  Therefore some
static/traditional testing limits are in train to avoid this case for
future testing.


------------------------------------------------------------------------
r203 | airwin | 2014-07-26 15:31:57 -0700 (Sat, 26 Jul 2014) | 2 lines
Changed paths:
   M /trunk/CONCATENATED_README.release

Prepend the release notes for 1.1.2.

------------------------------------------------------------------------
r202 | airwin | 2014-07-26 15:31:31 -0700 (Sat, 26 Jul 2014) | 2 lines
Changed paths:
   M /trunk/README.Release_Manager_Cookbook

Update instructions to exactly what occurred for the 1.1.2 release.

------------------------------------------------------------------------
r200 | airwin | 2014-07-26 13:54:34 -0700 (Sat, 26 Jul 2014) | 2 lines
Changed paths:
   M /trunk/ChangeLog.release

Update commit messages for 1.1.2 release cycle.

------------------------------------------------------------------------