Pietro Gagliardi
09c1a62a8e
Moved most of the headers to C++.
2016-04-20 19:39:20 -04:00
Pietro Gagliardi
655e05463d
Implemented the new font button stuff on Windows.
2016-04-20 14:17:55 -04:00
Pietro Gagliardi
721269b3eb
Implemented colored text on OS X and Windows.
2016-04-19 18:45:16 -04:00
Pietro Gagliardi
5b74b2752e
Decided to use character offsets instead of byte offsets for text layout attributes. This removes the shaky code from the OS X and Windows backends to compute a list of character offsets for byte offsets. The equivalent code for GTK+ to convert chars to bytes will be much more solid; it will be written next.
2016-04-19 14:39:33 -04:00
Pietro Gagliardi
a1d0e669c8
Added some helpers for actually returning a font from the font button on Windows. Similar helpers are needed on other platforms.
2016-04-18 19:18:29 -04:00
Pietro Gagliardi
861b5f22df
Finished changing the Windows font dialog and uiFontButton to manipulate IDWriteFonts directly.
2016-04-18 17:14:33 -04:00
Pietro Gagliardi
b19a8c9c46
Okay, I made a mistake: we want uiFontButton to return uiDrawFonts, not uiDrawFontDescriptors. Started the work to change the Windows one likewise.
2016-04-18 15:31:52 -04:00
Pietro Gagliardi
ccfa3d41a3
More work on the initial font and showing styles. I have a feeling my current approach is a mistake.
2016-04-18 13:32:48 -04:00
Pietro Gagliardi
4d025172fe
And brought the new font out of the font dialog and into the font button. We should be good now...
2016-04-18 01:12:25 -04:00
Pietro Gagliardi
dcbbced23b
Implemented loading of the font dialog font. Now to save it too.
2016-04-18 00:56:13 -04:00
Pietro Gagliardi
97aad9a039
Added support routines for migrating DirectWrite attributes.
2016-04-18 00:41:17 -04:00
Pietro Gagliardi
7cf8420682
Hooked the Windows font button and font dialog together at last. More TODOs. Now we just need to actually convert everything to DirectWrite and implement the label.
2016-04-17 22:09:18 -04:00
Pietro Gagliardi
40d673fb01
Implemented the correct behavior for the initial display of the size combobox of the font dialog. At this point we can move straight to manipulating the uiDrawFontDescriptors.
2016-04-17 21:11:55 -04:00
Pietro Gagliardi
0e75a6f950
Properly implemented the size combobox. We're so close!
2016-04-17 20:10:14 -04:00
Pietro Gagliardi
39ea7e269f
Implemented nearest style matches when changing families. Wow we're actually almost done here!
2016-04-17 19:37:03 -04:00
Pietro Gagliardi
156fae7bbb
Implemented events and type-to-select for the Style combobox.
2016-04-17 19:22:37 -04:00
Pietro Gagliardi
aa6778acbe
Implemented type-to-search in the font dialog.
2016-04-17 19:03:34 -04:00
Pietro Gagliardi
edef521ded
Quick TODO resolution.
2016-04-17 16:49:50 -04:00
Pietro Gagliardi
d45fdb4a3d
Migrated the font dialog from drawing its own sample text to having a D2D scratch control do it.
2016-04-17 13:06:45 -04:00
Pietro Gagliardi
3bb2a0ab21
Added a Direct2D scratch control that will be used by the font and color dialogs we will implement.
2016-04-17 11:53:24 -04:00
Pietro Gagliardi
cc7675ab5a
More font dialog work: split out all the combobox manipulation functions into their own function, made the current selection part of the structure, made the font families item data to the family combobox, and changed the font face string function to use the dedicated font face string method (thanks Windows 7 ChooseFont sample program).
2016-04-17 01:34:05 -04:00
Pietro Gagliardi
46db0b30ee
Oh fixed the font dialog not showing all styles thing; stupid me forgot that a IDWriteFontFamily is also a IDWriteFontList.
2016-04-16 22:46:39 -04:00
Pietro Gagliardi
9a1367c0bc
More font dialog work. Ugh if only I could just use the Windows 7 sample code one...
2016-04-16 22:15:19 -04:00
Pietro Gagliardi
f3ae17793d
Quick compilation fixes. I really don't know what I'm doing right now.
2016-04-16 19:25:21 -04:00
Pietro Gagliardi
ecbdddb703
More sample work. Ugh this is a mess I should just use Direct2D after all.
2016-04-16 19:07:17 -04:00
Pietro Gagliardi
351fc59b9f
Started work on previewing samples of fonts in the new font dialog. This adds all the boilerplate, including sample positioning. Also tightens up the dialog a bit. Now just to implement the actual drawing.
2016-04-16 17:58:45 -04:00
Pietro Gagliardi
23ec771c86
Removed uiFontDescriptor.SmallCaps; on Windows this has to be applied to layouts.
2016-04-15 14:23:16 -04:00
Pietro Gagliardi
cedb5394b4
Removed the small caps checkbox from the new font dialog. It turns out that the small caps in DirectWrite is applied to a text layout, not a part of a font like it is elsewhere. Do we even still need the custom font dialog?
2016-04-15 13:57:26 -04:00
Pietro Gagliardi
0ad767721d
More font dialog stuff.
2016-04-15 13:18:06 -04:00
Pietro Gagliardi
fa94298015
Split the function to extract the correct string of an IDWriteLocalizedStrings instance out into its own function. I'm not sure if I'll need the informational strings out of a font (need to see what the strings actually say first), but in case I do, this will help.
2016-04-15 10:15:05 -04:00
Pietro Gagliardi
0bc140cd46
Dropped uiDrawTextGravity. That has to do with vertical text, which we can both abstract into a higher level API and can't do yet because DirectWrite simply does not support vertical text on Windows 7 for reasons that escape logical thought.
2016-04-15 00:24:27 -04:00
Pietro Gagliardi
8ac3c53e0f
More fontdialog.cpp work. This is gonna kill me...
2016-04-14 22:40:01 -04:00
Pietro Gagliardi
d3c4b0cf4d
More work on fontdialog.cpp.
2016-04-14 22:25:32 -04:00
Pietro Gagliardi
97d35571c1
Started writing a replacement for the standard ChooseFont() dialog that uses DirectWrite instead of GDI.
2016-04-14 21:35:50 -04:00
Pietro Gagliardi
88e797e2be
Split the DirectWrite boilerplate to another C++ file so we can write a new font dialog with it, maybe.
2016-04-14 19:57:58 -04:00
Pietro Gagliardi
edd9b2f133
"Implemented" uiFontButton on Windows.
2016-04-14 17:12:13 -04:00
Pietro Gagliardi
7f2194c383
Typo fixes in the previous commit.
2016-01-24 21:50:10 -05:00
Pietro Gagliardi
ab0230b428
Added a function for scrolling uiAreas. Implemented on OS X; stubbed elsewhere.
2016-01-24 21:41:34 -05:00
Pietro Gagliardi
a3344f0341
Two important changes to the Windows build:
...
1) cvtres is no longer used directly. MSDN says to send the .res files to link.exe; that runs cvtres for us (at least it seems to, accoring to Google results for error LNK1158). It'll also avoid some of the weird warnings in cvtres, like CVT4001.
2) (and more important, but it depended on 1) Command-line switches are now passed using - instead of /. This is because some versions of MinGW are buggy and treat anything that starts with a / as a MSYS filename that needs to be converted to a Windows pathname.
Update #16 .
2016-01-19 16:40:00 -05:00
Pietro Gagliardi
cb8323bee6
Decided that yes, for a single line the leading should not be included.
2016-01-16 18:22:27 -05:00
Pietro Gagliardi
32cc648e13
Diagnosed the root cause of an issue in a TODO; still need to fix it.
2016-01-16 16:48:10 -05:00
Pietro Gagliardi
eb6e10350d
Implemented the multiline stuff on Windows. Oh boy this is so broken everywhere...
2016-01-16 16:42:33 -05:00
Pietro Gagliardi
06fa877058
Updated an error message.
2016-01-14 03:29:08 -05:00
Pietro Gagliardi
454fabaf2b
Implemented metrics on Windows and fixed Unicode conversion in uiDrawNewTextLayout().
2016-01-13 00:54:52 -05:00
Pietro Gagliardi
09458c794a
Ported the new drawing system to Windows.
2016-01-12 18:14:48 -05:00
Pietro Gagliardi
0ec7d91e22
Filled in the text coordinate conversion functions on Windows.
2016-01-09 18:22:51 -05:00
Pietro Gagliardi
ef54b99b93
Fixed text rendering on Windows. Woo, it all works so far!
2016-01-09 02:23:01 -05:00
Pietro Gagliardi
a826fd7516
Wrote the text drawing code on Windows. Now to build and test.
2016-01-09 01:07:48 -05:00
Pietro Gagliardi
6a15e23897
Set up saner handling of sonames at build time.
2016-01-05 11:51:36 -05:00
Florent Clairambault
e24c8f6440
Merge remote-tracking branch 'upstream/master'
2016-01-02 13:27:08 +01:00
Florent Clairambault
c204e47b72
Various fixes around makefiles
...
* $PREFIX is uppercase (I have no idea why I put it lowercase before).
* "install" rules is OS specific and moved to new OS specific files. So that they can be included last.
* "examples" rule defines the list of examples to execute.
* Travis launches the "test" rule.
2016-01-01 23:19:14 +01:00
Pietro Gagliardi
5d40eff32a
Added Windows 7 compatibility to the manifest.
2015-12-31 19:58:03 -05:00
Pietro Gagliardi
c5d4813dec
Stubbed out the text drawing functions on Windows too.
2015-12-31 12:30:53 -05:00
Pietro Gagliardi
6a5997cc1a
More notes.
2015-12-23 15:22:01 -05:00
Pietro Gagliardi
5698d84cf3
More text rendering stuff. And given how it appears I have to render DirectWrite data into a Direct2D path geometry, I might be a little bit too much in over my head here...
2015-12-23 15:19:40 -05:00
Pietro Gagliardi
9efb452b2e
Implemented the font family listing on Windows.
2015-12-22 20:01:53 -05:00
Pietro Gagliardi
5267489f0b
Now entering Valhalla.
2015-12-22 16:00:51 -05:00
Pietro Gagliardi
a1d2c2b9fd
Oh that's fucking wonderful, dwrite.h is C++-only. This is gonna make things extra wonderful...
2015-12-22 15:51:16 -05:00
Pietro Gagliardi
e63f73e240
TODO elaboration.
2015-12-22 01:06:18 -05:00
Pietro Gagliardi
51d7cabfd9
More TODOs.
2015-12-22 01:02:06 -05:00
Pietro Gagliardi
0b68fc6931
More TODOs.
2015-12-22 00:43:48 -05:00
Pietro Gagliardi
f04bbe1bdc
Laid the foundation for text rendering into uiAreas on Windows. GTK+ and Cocoa backends need no special setup (we can start using Pango and Core Text respectively without extra initialization). Not sure when I'll actually add the APIs to draw text, but hopefully it's soon because I really really really need to start working on what I was actually going to USE this library for, and text rendering is the last major prerequisite.
2015-12-22 00:35:52 -05:00
Pietro Gagliardi
af374ed859
Implemented redrawing on scrolling and adjusting scrolling on resizing and actually implemented scrolled drawing correctly on uiArea on Windows.
2015-12-19 14:43:34 -05:00
Pietro Gagliardi
13fa2e213d
Took scrolling into account on uiArea with drawing (untested) and mouse events (tested). This is the preliminary work for moving scrolling from pixels to DIPs. But first, a test of scrolled drawing.
2015-12-18 22:06:48 -05:00
Pietro Gagliardi
adc72c9d0b
Implemented the other areautil.c functions.
2015-12-18 21:38:27 -05:00
Pietro Gagliardi
5e90cbcb93
Started a windows/areautil.c for miscellaneous functions, mostly (completely for now) having to do with coordinates and sizes. Right now it only has renderTargetGetSize().
2015-12-18 21:15:40 -05:00
Pietro Gagliardi
444a7d3045
Fixed mouse capture behavior. It's not as clean as it could be, but it'll do.
2015-12-18 19:38:21 -05:00
Pietro Gagliardi
4b114f2764
Started the implementation of mouse crossing on Windows.
2015-12-18 18:06:45 -05:00
Pietro Gagliardi
ce042eb12a
Added an expository comment to windows/area.c.
2015-12-18 15:05:49 -05:00
Pietro Gagliardi
4edcddce14
Fixed the ID2D1RenderTarget::GetSize() madness a *SECOND* time. Urgh. Also removed a now-irrelevant TODO.
2015-12-18 15:04:37 -05:00
Pietro Gagliardi
6d06e15390
More Windows uiArea migration and compiler error fixes. Now to figure out what happened with GetSize again...
2015-12-18 14:21:35 -05:00
Pietro Gagliardi
e76b34b670
Split windows/area.c into a bunch of files to make it much more manageable. Also did half of the migration to the new uiArea system.
2015-12-18 12:00:46 -05:00
Pietro Gagliardi
e390730e6f
Reestablished the Windows build. Also fixed a small bug in windows/area.c. Now to re-establish the test!
2015-12-11 19:49:14 -05:00
Pietro Gagliardi
70886e4ade
Moved the old build files away. Yes that's right folks, we're redoing the build system *again*! Isn't that *fun*?
2015-12-10 18:49:50 -05:00
Pietro Gagliardi
919e5f09cd
Double-correction of previous commit.
2015-12-09 15:38:24 -05:00
Pietro Gagliardi
5f530c5bf7
More MinGW stuff.
2015-12-09 15:36:56 -05:00
Pietro Gagliardi
be6555d885
More MinGW removal stuff.
2015-12-09 15:31:14 -05:00
Pietro Gagliardi
5e26720f18
Removed $ARCH from the build.
2015-12-09 13:49:13 -05:00
Pietro Gagliardi
0307e74e90
Added uiMultilineEntry on Windows. Fixed a misuse of std::condition_variable in the uiQueueMain test program.
2015-12-06 14:38:13 -05:00
Pietro Gagliardi
3394142357
Some TODO expansion. This was the active tab on my browser the whole time and I didn't even notice!
2015-12-05 20:37:29 -05:00
Pietro Gagliardi
c5eef23930
More TODOs.
2015-12-05 20:31:57 -05:00
Pietro Gagliardi
88f9c7ea19
Quick comment update for previous commit.
2015-12-04 23:49:04 -05:00
Pietro Gagliardi
f77955aefb
Added uiQueueMain() (basically g_idle_add()) and implemented it on all platforms except Haiku. A test to come. After this we can start rewriting the Go package ui at long last.
2015-12-04 23:42:03 -05:00
Pietro Gagliardi
8084041139
Removed uiAreaHandler.RedrawOnResize(); Direct2D requires us to always redraw on resize (see previous commit). Added windows/amd64 to the example makefiles and updated them to use libui.xxx instead of new.xxx.
2015-12-04 21:04:51 -05:00
Pietro Gagliardi
c2100a19be
Implemented some changes to uiArea on Windows, thanks to instructions from Rick Brewster. Removing uiAreaHandler.RedrawOnResize() comes next.
2015-12-04 20:45:31 -05:00
Pietro Gagliardi
d1c93a9956
Made relayouts on Windows faster by preventing an accidental requeue of a window that's being processed in the event that a layout change changes the minimum size (such as switching tabs).
2015-12-04 19:34:51 -05:00
Pietro Gagliardi
d9343c0b4b
More TODOs.
2015-11-30 09:12:56 -05:00
Pietro Gagliardi
bf35167d40
More TODOs.
2015-11-28 16:36:08 -05:00
Pietro Gagliardi
e6e264408f
Implemented dialog parenting on Windows. Eliminated the dialog helper. uiArea still works (and still responds to key events), but IsDialogMessage() isn't being called for the active window anymore...
2015-11-28 10:53:48 -05:00
Pietro Gagliardi
7646e8303d
Fixed a small bug in the uiArea message filter.
2015-11-27 23:00:57 -05:00
Pietro Gagliardi
09129229fd
Fixed assorted MSVC uiArea issues.
2015-11-27 22:44:42 -05:00
Pietro Gagliardi
14887ad7e3
Fixed a logical error in the uiArea message filter.
2015-11-27 21:53:17 -05:00
Pietro Gagliardi
3a5a4557ab
Switch uiArea from using a custom message pump to using a message filter for input handling. This allows us to rewrite the dialog system to avoid needing to block ALL windows and set a proper parent window.
2015-11-27 21:45:30 -05:00
Pietro Gagliardi
f5a2759b09
Dropped utarray in favor of our ptrArray. This should get rid of our strdup woes.
2015-11-27 20:38:21 -05:00
Pietro Gagliardi
99176a1d10
Disabled compiler warnings for system headers on MSVC. Removed /Wp64; it's a no-op on VS2013 (our minimum supported version).
2015-11-27 20:07:23 -05:00
Pietro Gagliardi
d29d36a6cd
Fixed assorted build errors in the MSVC build. It works! And MinGW-w64 will need isolation awareness...
2015-11-27 19:59:46 -05:00
Pietro Gagliardi
abd99a325b
Integrated the Common Controls 6 manifest into libui.dll. While it does work, themes don't work, and I wonder if it's because of isolation awareness. Time to write an nmakefile!
2015-11-27 13:35:24 -05:00
Pietro Gagliardi
b8be92bc45
More notes.
2015-11-27 12:35:23 -05:00
Pietro Gagliardi
bd354fd651
More TODOs.
2015-11-27 12:21:40 -05:00
Pietro Gagliardi
f93d9a4c91
More WPF foundations/boilerplate work.
2015-11-25 14:38:40 -05:00