Morphic (the graphical object framework underlying Kansas) was originally
designed to support arbitrary scaling, and the scaling code worked at one time,
although to my knowledge it has not recently been tested. However, we later
started using pixmap images in the system (e.g., in the web browser) but
haven't yet written code to scale these images. You'd want to do something
intelligent about "greeking" text below a certain size, and you'd probably want
to put in some sort of detail suppression to simplify the drawing of composite
morphs when zoomed way out. The Pad++ folks also discovered that you need to
turn off mouse sensitivity as the screen size of objects shrink or you find
that you're clicking on sub-pixel buttons without realizing it!
I'd love to see this happen. I think it would require 4-6 weeks of solid work.
Mergesort is used to sort indexable collections because it preserves the order
of elements that are "equal" according to the search comparison function. (That
is, it is a stable sort.) Thus, you could sort a list of files first by name,
then by size, and the second sort would preserve the name ordering for for
files of the same size. Thanks to Dave for pointing out the utility of stable
Heapsort is used to sort collections that aren't initially sorted, like sets,
since there is no ordering to preserve. It is the default sort algorithm for
I believe these are both O(n log n) sorts.
Quicksort was tried but mergesort outperformed it for in some cases where the
collection was already nearly sorted or where all elements were the same. This
was true even for various pivot-selection algorithms.