You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
mrichards42 1960e5dd79
Merge pull request #163 from jpd236/encode-puz
5 months ago
deps Fix inconsistencies in VS compilation versions. 1 year ago
dist Update changelog path in nsi 1 year ago
doc Rename doc/markdown.py -> doc/build_docs.py 1 year ago
docs Add packages files for updater 1 year ago
images Stripped color profile from PNGs due to recent libpng warnings 8 years ago
lua Merge pull request #142 from mrichards42/wxlua3 6 months ago
puz Fix bug in can_encode_puz. 5 months ago
scripts Downloader: fix popup bug w/ shaded squares 7 months ago
src Merge pull request #162 from jpd236/shift-arrow-regression 5 months ago
yajl Migrate to premake5. 2 years ago
yaml Migrate to premake5. 2 years ago
.gitignore Fix inconsistencies in VS compilation versions. 1 year ago
AUTHORS Fix compilation and basic functionality on modern Macs. 5 years ago
CHANGELOG.md Rename CHANGELOG -> CHANGELOG.md 1 year ago
COPYING 12 years ago
README.md Fix inconsistencies in VS compilation versions. 1 year ago
Todo.txt Migrate documentation from SourceForge to GitHub. 2 years ago
VERSION Bump snapshot version 1 year ago
appveyor.yml Fix crash on latest MacOS version. 7 months ago
autoexp.dat Add auto-expand file for VC 10 years ago
build-curl.sh Fix inconsistencies in VS compilation versions. 1 year ago
build-luajit.sh Fix crash on latest MacOS version. 7 months ago
build-wxwidgets.sh Fix crash on latest MacOS version. 7 months ago
default_config.ini Make Clue Prompt resizable in default layouts 1 year ago
premake4.lua Fix crash on latest MacOS version. 7 months ago
premake4_wxdefs.lua Migrate to premake5. 2 years ago
premake4_wxlibs.lua Migrate to premake5. 2 years ago
premake5 Move Mac builds from Travis to AppVeyor. 1 year ago
premake5.exe Move Mac builds from Travis to AppVeyor. 1 year ago
premake_config.lua Fix inconsistencies in VS compilation versions. 1 year ago
wxaui-tweaks.patch Update wxWidgets dependency to 3.1.3. 2 years ago

README.md

XWord - A cross platform crossword solving program

XWord is a cross-platform crossword puzzle program designed to be highly configurable. It reads multiple puzzle file formats.

See it in action

In 2013 Alex Boisvert and Tyler Hinman made a series of videos called "Crossword Race" where they race to solve puzzles using XWord, with Tyler having different handicaps each time. Some of the handicaps showcase features of XWord and the puzzle formats it supports, including non-standard word directions and diagramless solving.

Features

  • Solving of all American style, cryptic, and diagramless crosswords.
  • Solving rebus puzzles.
  • Solving puzzles with a variety of tricks, e.g. diagonal clues, arbitrary numbering schemes, shaded squares.
  • Support for reading number of puzzle formats:
    • Across Lite
    • XPF
    • jpz
    • ipuz (partial)
  • Recovery of corrupted Across Lite .puz files.
  • A timer.
  • Checking and revealing letters.
  • Scrambling and unscrambling puzzle solutions (for Across Lite files).
  • Viewing puzzle notes.
  • Zooming the grid in and out.
  • Rearranging the window layout.
  • Color, font, and solving behavior configuration.
  • Printing

XWord is extensible via the lua scripting language. A number of plugins are available. See Tools > Package Manager.

Diagramless Puzzles

XWord allows the user to solve diagramless puzzles similarly to normal puzzles with the exception that black squares are allowed to be selected. When selected, black squares are outlined in the focused square color. To make a white square black, type a period ("."). To make a black square white, type a period or enter another letter.

XWord provides some guidance when solving diagramless puzzles: clue numbers in the grid are automatically calculated when a square is made black or white. Numbers in the grid that do not appear in the clue list are highlighted in red. Naturally, this automatic calculation of grid numbers only works if the puzzle follows the normal rules of numbering a grid.

Building XWord

XWord uses the wxWidgets cross-platform toolkit (statically linked). wxaui-tweaks.patch slightly alters aui/framemanager. wxWidgets-osx-private-build-fix.patch is an upstream patch to wxWidgets 3.1.3 which fixes Mac builds. If you would like to use these patches, apply them to the wxWidgets directory.

XWord uses premake to generate project files. Version 5 is required.

To build project files:

$ premake5 [target]

# Examples:
$ premake5 vs2008
$ premake5 xcode4

On windows, the %WXWIN% environmental variable will be used to find the wxWidgets directory. On other platforms, wx-config is used. You can override either %WXIN% or the default wx-config (see options below).

XWord-specific premake options:

--disable-lua
--wx-prefix="wxWidgets directory"
--wx-config="wx-config path" # mac/linux

# List all options
$ premake5 --help

Dependencies

Versions listed are the most recent that I have build XWord against. I'm sure the simpler libraries could be updated.

Windows builds include dlls for everything except curl, lua, and wxWidgets.

  • wxWidgets (3.0; 3.1.2 is required for Mac OS 10.12+)
  • lua (5.1, but actually using LuaJIT 2.0.5)
  • expat
  • curl (7.69.0)
  • yajl (2.0.2 -- source included)
  • zlib (1.2.5)
  • libyaml (0.2.2 -- source included)

Curl (for Windows) can be built with build-curl.sh; LuaJIT can be built with build-luajit.sh.

A debug build of wxWidgets is needed for debug builds of XWord, and likewise for release builds. The following configure options should work as a baseline for release builds:

$ ./configure --disable-shared --enable-compat28

For debug builds, add --enable-debug. For Mac OS builds, add --enable-universal-binary=i386 --with-macosx-version-min=10.6. You may also want to add -fvisibility-inlines-hidden to CFLAGS, CXXFLAGS, CPPFLAGS, OBJCFLAGS, and OBJCXXFLAGS, as this is the default option used by the Mac toolchain, and this option should be used consistently across an app and all of its dependencies.

Lua libraries

Source included in lua directory

  • luacurl (rename library to c-luacurl -- there is an additional lua module for this library)
  • luatask (rename library to c-task -- there is an additional lua module for this library)
  • lyaml (rename library to c-yaml -- there is an additional lua module for this library)
  • luayajl
  • lxp
  • lfs
  • wxLua (2.8.12.3 -- with bindings built against wxWidgets 3.0)