Commit graph

60 commits

Author SHA1 Message Date
Sergii Stoian
1d19c11923 * Source/GSHorizontalTypesetter.m: removed extra imports left from
last 2 commits.
2019-12-11 12:13:09 +02:00
Sergii Stoian
fcee2e2c63 * Headers/Additions/GNUstepGUI/GSLayoutManager.h,
Source/GSLayoutManager.m: new method -typingAttributes returns default typing
  attributes of NSTextView.
* Source/NSLayoutManager.m: override GSLayoutManager's -typingAttributes - primitive
  method - provides access to _typingAttributes ivar.
* Source/GSHorizontalTypesetter.m: use new GSLayoutManager's -typingAttributes method
  to get paragraph style and font of new empty text container. Normally `curLayoutManager`
  is a NSLayoutManager object so actually we get NSLayoutManager's _typingAttributes.
2019-12-10 19:23:04 +02:00
Sergii Stoian
5415783c56 * Source/GSHorizontalTypesetter.m: (_addExtraLineFragment) get paragraph style and
font from NSLayoutManager's typing attributes. Fixes insertion point height for empty
        text objects (NSTextView, NSTexField etc.).
2019-12-10 02:09:13 +02:00
fredkiefer
d9c033d464 * Headers/Additions/GNUstepGUI/GSHorizontalTypesetter.h: Add
comment to describe cache variables.
* Source/GSHorizontalTypesetter.m: Restructure glyph attribute
cache filling and make _addExtraLineFragment saver by providing a
default for curParagraphStyle.
2019-02-10 22:17:36 +01:00
fredkiefer
caa58cf72b Tiny fix for bug found by valgrind.
Make sure nominal gets always set for a glyph.
2018-02-05 23:25:36 +01:00
Fred Kiefer
1323c50d6e * Source/GSHorizontalTypesetter.m (-layoutLineNewParagraph:): Add
extra line fragment for empty string here.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@40350 72102866-910b-0410-8b05-ffd578937521
2017-02-20 22:32:13 +00:00
Riccardo Mottola
cc675e4f3c revert last erroneous commit mixed with debug code
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@39534 72102866-910b-0410-8b05-ffd578937521
2016-03-12 22:56:34 +00:00
Riccardo Mottola
e0fedc5692 fix warning
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@39533 72102866-910b-0410-8b05-ffd578937521
2016-03-12 22:48:24 +00:00
Fred Kiefer
51c43eae39 * Headers/AppKit/NSTextAttachment.h
* Source/NSTextAttachment.m: Use NSUInteger and bring closer to
        the Apple implementation.
        * Source/GSHorizontalTypesetter.m (-layoutLineNewParagraph:):
        For attachments use the cell origin y flipped.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37704 72102866-910b-0410-8b05-ffd578937521
2014-02-23 21:07:20 +00:00
Fred Kiefer
9b69de19d4 * Source/GSHorizontalTypesetter.m (-layoutLineNewParagraph:):
Only adjust max_line_height to minimumLineHeight if it isn't zero.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37296 72102866-910b-0410-8b05-ffd578937521
2013-10-27 20:02:41 +00:00
Fred Kiefer
a0616ff819 * Source/GSHorizontalTypesetter.m: Change floats into CGFloats to
stop infinite loop.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@36282 72102866-910b-0410-8b05-ffd578937521
2013-03-05 22:33:57 +00:00
Fred Kiefer
e370aab73b * Headers/AppKit/NSTextContainer.h,
* Source/NSTextContainer.m,
        * Source/GSHorizontalTypesetter.m: Correct the definition of
        NSLineMovementDirection.
        * Headers/AppKit/NSFont.h
        * Source/NSFont.m: Add a few missing 10.4 methods.
        * Header/AppKit/NSLayoutManager.h,
        * Source/NSLayoutManager.m: Add one 10.5 method.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@35999 72102866-910b-0410-8b05-ffd578937521
2013-01-19 18:22:45 +00:00
Fred Kiefer
89fed0244c * Headers/Additions/GNUstepGUI/GSLayoutManager_internal.h: Make
-_invalidateEverything visible.
        * Source/GSLayoutManager.m
        * (-invalidateGlyphsForCharacterRange:...): Call
        -_invalidateEverything when the whole character range is
invalidated.
        * Source/NSStringDrawing.m: Remove workarounds for full layout
        * invalidation.
        Move initialisation check into cache_lock().
        Extract size match code in function.
        Put #ifdef around all statistics code.
        Use same LARGE_SIZE value as Apple does.
        Make the methods taking options the main ones.
        * Source/GSHorizontalTypesetter.m (-fullJustifyLine::,
        -rightAlignLine::, -centerAlignLine::): Don't align when the
line
        width is bigger than 1e7.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@35925 72102866-910b-0410-8b05-ffd578937521
2012-12-30 15:48:21 +00:00
Wolfgang Lux
37a215ae8d Revert change to discard (but not handle) caught exception in typesetter
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@35332 72102866-910b-0410-8b05-ffd578937521
2012-07-31 08:21:17 +00:00
Christopher Armstrong
42162c4e22 2011-08-28 Christopher Armstrong <carmstrong@fastmail.com.au>
* Source/GSHorizontalTypesetter.m: Split declaration of struct
	GSHorizontalTypesetter_glyph_cache_s and struct
	GSHorizontalTypesetter_line_frag_s from their typedefs to compile
	under clang.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33793 72102866-910b-0410-8b05-ffd578937521
2011-08-28 09:25:02 +00:00
Eric Wasylishen
5d897881e4 * Source/GSLayoutManager.m:
* Source/GSHorizontalTypesetter.m:
* Headers/Additions/GNUstepGUI/GSLayoutManager_internal.h:
* Headers/Additions/GNUstepGUI/GSLayoutManager.h: Store
glyph advances in the runs in GSLayoutManager. Extend the
NSGlyphStorage protocol to support a case where the glyph
generator provides the glyph advances.

I'm hoping to use this in the future to implement (optional)
glyph generators which are wrappers around HarfBuzz or the ICU
OpenType layout engine.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33684 72102866-910b-0410-8b05-ffd578937521
2011-08-02 23:34:06 +00:00
Fred Kiefer
86ff6abf69 Replace direct use of the isa pointer with a call to object_getClass()
to make David happy.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33545 72102866-910b-0410-8b05-ffd578937521
2011-07-14 07:17:24 +00:00
Fred Kiefer
6483053f29 Yet another bit of #include -> #import replacement. Replace includes of Foundation.h.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@30034 72102866-910b-0410-8b05-ffd578937521
2010-03-25 09:11:50 +00:00
Fred Kiefer
c9d1292563 Small improvements to allow changing of the text container for a text
view.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@29648 72102866-910b-0410-8b05-ffd578937521
2010-02-15 17:04:17 +00:00
Fred Kiefer
0777c0574e Use default paragraph style in text layout when none is set.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28714 72102866-910b-0410-8b05-ffd578937521
2009-09-19 15:28:33 +00:00
Gregory John Casamento
8949deeb03 * Source/GSHorizontalTypesetter.m: Remove unlock and
log the exception, but don't rethrow it.
	* Source/GSLayoutManager.m: return a zero length range in
	 -(NSRange)glyphRangeForCharacterRange:actualCharacterRange:
	when charRange has a length and a location of 0.
	Added by Gregory John Casamento <greg.casamento@gmail.com>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28521 72102866-910b-0410-8b05-ffd578937521
2009-08-23 16:37:28 +00:00
Gregory John Casamento
e1afb724d2 * Source/GSHorizontalTypesetter.m: Use thread dictionary to hold
the instance of the typesetter for that thread.
	* Source/NSStringDrawing.m: Add locks to methods to prevent modification
	of static variables by separate threads from causing the application
	to get glyph generation errors.
	NOTE: These changes based on suggestions/ideas from Doug 
	Simons <doug@riverrock.org>.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28219 72102866-910b-0410-8b05-ffd578937521
2009-04-15 01:27:42 +00:00
Adam Fedor
7afdd32ac1 Revert library license version to 2 until applications can be converted
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@26619 72102866-910b-0410-8b05-ffd578937521
2008-06-10 04:01:49 +00:00
Fred Kiefer
deca87da4a Treat CJK characters as words.
Patch by Yen-Ju Chen <yjchenx@hotmail.com>.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@26022 72102866-910b-0410-8b05-ffd578937521
2008-02-04 10:46:20 +00:00
Fred Kiefer
3dc7f6d74c Set the text container to max size, when the text view is resizable.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@25863 72102866-910b-0410-8b05-ffd578937521
2008-01-04 21:02:29 +00:00
Fred Kiefer
193e31e678 Change all files to use GPL 3 and LGPL 3.
Prepare for next release.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@25536 72102866-910b-0410-8b05-ffd578937521
2007-10-29 21:16:17 +00:00
Fred Kiefer
4835a35c1c Add new MacOSX methods. Code mostly by Nikolaus Schaller.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@25270 72102866-910b-0410-8b05-ffd578937521
2007-06-18 21:08:54 +00:00
Richard Frith-MacDonald
65b175b904 Tweaks to avoid new compiler warnings with gcc-4.1 and some 64bit issues.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@23126 72102866-910b-0410-8b05-ffd578937521
2006-07-04 21:31:49 +00:00
Richard Frith-Macdonald
7971a89c72 Coding style fixups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@22019 72102866-910b-0410-8b05-ffd578937521
2005-11-16 11:34:25 +00:00
Adam Fedor
303dd1baf9 Update FSF Address.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@21259 72102866-910b-0410-8b05-ffd578937521
2005-05-26 02:52:46 +00:00
Alexander Malmberg
0958e055fa 2004-11-09 22:08 Alexander Malmberg <alexander@malmberg.org>
* Source/GSHorizontalTypesetter.m (-layoutLineNewParagraph:):
	Implement NSLineBreakByClipping. Set outside_line_frag and dont_show
	attributes for every glyph.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@20330 72102866-910b-0410-8b05-ffd578937521
2004-11-09 21:14:36 +00:00
Alexander Malmberg
7d98f0f270 2004-09-04 23:32 Alexander Malmberg <alexander@malmberg.org>
* Source/GSHorizontalTypesetter.m (-layoutLineNewParagraph:):
	Pass the right glyph position to cells.
	* Headers/AppKit/NSTextAttachment.h: Clarify documentation.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@19991 72102866-910b-0410-8b05-ffd578937521
2004-09-04 21:40:30 +00:00
Alexander Malmberg
c12bd68ed6 Optimize -advancementForGlyph: handling.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@19859 72102866-910b-0410-8b05-ffd578937521
2004-08-09 22:14:17 +00:00
David Ayers
b18f1c4ac4 Header reorganization - Please refer to ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@17408 72102866-910b-0410-8b05-ffd578937521
2003-07-31 23:52:10 +00:00
Fred Kiefer
3c46da992d Changed element char_index of structure glyph_cache_t to unsigned.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@17006 72102866-910b-0410-8b05-ffd578937521
2003-06-23 15:51:27 +00:00
Alexander Malmberg
d332316918 Handle text containers with no area.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16929 72102866-910b-0410-8b05-ffd578937521
2003-06-15 15:18:54 +00:00
Adam Fedor
6be9174933 Include <> -> ""
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16917 72102866-910b-0410-8b05-ffd578937521
2003-06-13 15:01:12 +00:00
Alexander Malmberg
8a2e943bbd Detect and handle gaps in the soft invalidated layout information.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16639 72102866-910b-0410-8b05-ffd578937521
2003-05-05 20:52:24 +00:00
Alexander Malmberg
bbdf75548a Fix updating of glyph counts in some rare cases. Minor cleanups.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16408 72102866-910b-0410-8b05-ffd578937521
2003-04-10 00:08:26 +00:00
Alexander Malmberg
60c44310e2 Tweak glyph caching parameters to increase performance.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16330 72102866-910b-0410-8b05-ffd578937521
2003-04-02 13:28:29 +00:00
Alexander Malmberg
017c2515c7 Change type of a variable holding a character index to int (was char, would overflow and break things.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16117 72102866-910b-0410-8b05-ffd578937521
2003-03-03 15:20:02 +00:00
Alexander Malmberg
8712b50242 Make sure the extra line frag rect is always set when we reach the end.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16043 72102866-910b-0410-8b05-ffd578937521
2003-02-22 01:43:11 +00:00
Alexander Malmberg
5faf6f6f1e Optimize reuse of soft-invalidated layout a bit in a common case.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16006 72102866-910b-0410-8b05-ffd578937521
2003-02-18 23:34:51 +00:00
Alexander Malmberg
f4a797f333 Use the soft-invalidated layout information to avoid rebuilding layout (when possible).
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16004 72102866-910b-0410-8b05-ffd578937521
2003-02-18 20:27:13 +00:00
Alexander Malmberg
e262df5bbd (-layoutGlyphsInLayoutManager:inTextContainer:startingAtGlyphIndex:previousLineFragmentRect:nextGlyphIndex:numberOfLineFragments:): Determine the initial value for newParagraph correctly.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@15992 72102866-910b-0410-8b05-ffd578937521
2003-02-18 00:35:18 +00:00
Alexander Malmberg
7e1801395c Store the line frags array as an ivar instead of allocating and freeing it everytime -layoutLineNewParagraph: is called.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@15977 72102866-910b-0410-8b05-ffd578937521
2003-02-16 16:54:45 +00:00
Alexander Malmberg
4dc81ab769 Implement extra line fragment handling.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@15968 72102866-910b-0410-8b05-ffd578937521
2003-02-16 03:18:35 +00:00
Alexander Malmberg
6d1c78032a Fix an edge case in tab handling. Also, if tabs occure and the paragraph style has no more tab stops, act as if there were tabs every 100 points.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@15957 72102866-910b-0410-8b05-ffd578937521
2003-02-14 16:59:38 +00:00
Alexander Malmberg
77950b1e66 Implement basic handling of tabs.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@15950 72102866-910b-0410-8b05-ffd578937521
2003-02-12 23:53:29 +00:00
Alexander Malmberg
39b3c70b7d (-breakLineByWordWrappingBefore:): Return correct index when breaking at a control glyph.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@15917 72102866-910b-0410-8b05-ffd578937521
2003-02-09 17:37:04 +00:00