aboutsummaryrefslogtreecommitdiff
path: root/misc.c (follow)
Commit message (Collapse)AuthorAge
* Introduce ftoa() as a replacement for the %g format specifierFranklin Wei2020-12-07
| | | | | Not all platforms support printing floats, this is a more portable (if uglier) way.
* Rename memswap() to swap_regions()Franklin Wei2020-12-07
| | | | | "swap_regions()" is first of all more descriptive, but more importantly, it doesn't break builds on Rockbox!
* Adopt C99 bool in misc.c functions.Simon Tatham2018-11-13
| | | | | The 'decode' flag to obfuscate_bitmap and the 'wrap' flag to move_cursor are the only ones affected here.
* misc.c: Fix implementation of free_keys.Lennard Sprong2018-06-14
| | | | The previous version attempted to free the first element multiple times.
* Build fix: stop initialising an auto char array.Simon Tatham2018-04-23
| | | | | | | Checking with the standards, I think this is legal C99, but not legal C89 - and we are compiling in C89 mode. Why _every_ version of gcc didn't object, given all the warning and pedantry options, I'm not sure, but one did, so I should fix it.
* Add a request_keys() function with a midend wrapper.Franklin Wei2018-04-22
| | | | | | | | This function gives the front end a way to find out what keys the back end requires; and as such it is mostly useful for ports without a keyboard. It is based on changes originally found in Chris Boyle's Android port, though some modifications were needed to make it more flexible.
* Move fgetline out into misc.c.Simon Tatham2018-04-22
| | | | I'm about to want to use it outside the GTK front end.
* Assorted char * -> const char * API changes.Simon Tatham2017-10-01
| | | | | | I went through all the char * parameters and return values I could see in puzzles.h by eye and spotted ones that surely ought to have been const all along.
* Use a proper union in struct config_item.Simon Tatham2017-10-01
| | | | | | This allows me to use different types for the mutable, dynamically allocated string value in a C_STRING control and the fixed constant list of option names in a C_CHOICES.
* New name UI_UPDATE for interpret_move's return "".Simon Tatham2017-10-01
| | | | | | | | | | | | | Now midend.c directly tests the returned pointer for equality to this value, instead of checking whether it's the empty string. A minor effect of this is that games may now return a dynamically allocated empty string from interpret_move() and treat it as just another legal move description. But I don't expect anyone to be perverse enough to actually do that! The main purpose is that it avoids returning a string literal from a function whose return type is a pointer to _non-const_ char, i.e. we are now one step closer to being able to make this code base clean under -Wwrite-strings.
* Nitpicks to the previous commit.Simon Tatham2017-04-30
| | | | | | | | | We enforce by assertion that the target buffer size is nonzero before subtracting 1 from it; the call to fatal() is replaced by another assert so that it will give clearer diagnostic information if it fails; the variable holding the return value of strlen should be size_t and its declaration should be in a C90-compatible location. Finally, the reason why the function needs to be exist is clarified.
* Work around non-compliant sprintf().Franklin Wei2017-04-30
| | | | | | | | Rockbox's sprintf() lacks the ability to left-justify a string. Fixed by adding a copy_left_justfied() function to misc.c. This is a new version of this commit, as the previous version broke saving!
* Patch idea from Debian, but modified considerably in implementation:Simon Tatham2010-04-25
| | | | | | | | | | | | introduce a new colour in Slant (COL_FILLEDSQUARE) which is used for the background of any grid square that has a diagonal line in it. This makes it easier to spot the one square on a giant board you forgot to fill in, but on the other hand I found it to look very strange and disconcerting. So I've set the colour to be identical to COL_BACKGROUND by default, and users who like the idea can enable it by environment variable or by local patch. [originally from svn r8930]
* Keyboard control for Dominosa (patch largely due to James H, thoughSimon Tatham2009-12-22
| | | | | | with considerable meddling from me). [originally from svn r8788]
* Patch from James H to add keyboard control in Sixteen and NetslideSimon Tatham2009-01-26
| | | | | | (and also belatedly document the keyboard support in Unequal). [originally from svn r8432]
* Patch from James H to centralise some generally useful cursor-Simon Tatham2008-09-13
| | | | | | handling functionality into misc.c. [originally from svn r8176]
* Add a new misc.c function needed by Slide's colour setup.Simon Tatham2007-05-07
| | | | [originally from svn r7552]
* Substantial infrastructure upheaval. I've separated the drawing APISimon Tatham2005-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | as seen by the back ends from the one implemented by the front end, and shoved a piece of middleware (drawing.c) in between to permit interchange of multiple kinds of the latter. I've also added a number of functions to the drawing API to permit printing as well as on-screen drawing, and retired print.py in favour of integrated printing done by means of that API. The immediate visible change is that print.py is dead, and each puzzle now does its own printing: where you would previously have typed `print.py solo 2x3', you now type `solo --print 2x3' and it should work in much the same way. Advantages of the new mechanism available right now: - Map is now printable, because the new print function can make use of the output from the existing game ID decoder rather than me having to replicate all those fiddly algorithms in Python. - the new print functions can cope with non-initial game states, which means each puzzle supporting --print also supports --with-solutions. - there's also a --scale option permitting users to adjust the size of the printed puzzles. Advantages which will be available at some point: - the new API should permit me to implement native printing mechanisms on Windows and OS X. [originally from svn r6190]
* Two tiny cleanup patches from James H.Simon Tatham2005-07-17
| | | | [originally from svn r6111]
* Get rid of the malloc in shuffle(), by defining a subfunctionSimon Tatham2005-07-17
| | | | | | | memswap() which declares a fixed-size buffer on the stack and uses it multiple times if necessary. [originally from svn r6107]
* Another game from James H: `Black Box'.Simon Tatham2005-07-17
| | | | [originally from svn r6100]
* Cleanups and memory leak fixes from James H.Simon Tatham2005-07-16
| | | | [originally from svn r6099]
* Introduce a `shuffle' utility function.Simon Tatham2005-07-14
| | | | [originally from svn r6090]
* Refactoring from James H: the highlight and lowlight colour setupSimon Tatham2005-07-06
| | | | | | | common to Fifteen, Sixteen, Twiddle and Pegs is now a utility function in misc.c. [originally from svn r6076]
* `Guess', a Mastermind clone from James Harvey. This checkin alsoSimon Tatham2005-06-23
| | | | | | | | introduces a few new utility functions in misc.c, one of which is the bitmap obfuscator from Mines (which has therefore been moved out of mines.c). [originally from svn r5992]
* The Windows RNG turns out to only give about 16 bits at a time. ThisSimon Tatham2004-05-03
| | | | | | | | | | | | | | | is (a) pretty feeble, and (b) means that although Net seeds transfer between platforms and still generate the same game, there's a suspicious discrepancy in the typical seed _generated_ by each platform. I have a better RNG kicking around in this code base already, so I'll just use it. Each midend has its own random_state, which it passes to new_game_seed() as required. A handy consequence of this is that initial seed data is now passed to midend_new(), which means that new platform implementors are unlikely to forget to seed the RNG because failure to do so causes a compile error! [originally from svn r4187]
* Game configuration box for Windows, by constructing the dialog boxSimon Tatham2004-05-03
| | | | | | | | | | right from scratch without the slightest reference to any dialog templates (meaning that we get to figure out the layout and _then_ choose the window size). I'm rather pleased with that. Also introduced free_cfg(), which is why this checkin touched gtk.c as well. [originally from svn r4184]
* Implemented text and clipping primitives in the frontend, and addedSimon Tatham2004-04-29
two new simple games `fifteen' and `sixteen'. [originally from svn r4173]