caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Kuba Ober <ober.14@osu.edu>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] What does Jane Street use/want for an IDE? What about you?
Date: Wed, 5 Nov 2008 10:44:24 -0500	[thread overview]
Message-ID: <200811051044.25761.ober.14@osu.edu> (raw)
In-Reply-To: <4b5157c30811050039s659575ack8b6e9a9026e67835@mail.gmail.com>

On Wednesday 05 November 2008, Paolo Donadeo wrote:
> > In contrast, you can implement a GUI toolkit in OCaml that far exceeds
> > the relevant limitations of Qt4 with quite easily.
>
> Jon, did you ever used Qt in a big C++ or Python project? Qt is the
> best GUI framework out there, GTK is a ridiculous toy in comparison,
> and it took ages to reach this level of "completeness". Frankly, I
> think you are heavily undervaluing the task of building a *decent* GUI
> from scratch.

I wholeheartedly agree.

Jon's valid point is that some concepts in Qt's core are unnecessarily
complicated due to the fact that there is no higher-level concept of
a display list or scene description.

This necessitates things which in would be hacks given display lists
/ scene descriptions. Case in point:

A QTextEditor or QPlainTextEditor is an editor widget which works on
a QTextDocument. A QTextDocument has an associated implementation of an
QAbstractTextDocumentLayout. The latter has methods such as anchorAt(QPoint),
blockBoundingRect(QTextBlock) and hitTest(QPoint). Those methods
are only necessary since once a document is laid out by the layout
engine, any links between the rendered representation and 
the document are hidden by the Q...TextDocumentLayout. What 
QTextDocumentLayout does is to simply send a bunch of primitives to
the QPainter which actually renders them on some device, but this
is done without using any sort of a list.

Even if a display list (QPicture passes for it) was used, it's a closed-up
class that, while holding a display list, provides no trivial access for it.
You can of course play() a QPicture on your own a QPaintDevice that talks to
your own QPaintEngine, but there is no functionality in place to attach
your own data to elements of such a display list, unless you resort
of course to another layer of hacks. No such metadata functionality
exists for QPainterPath (which is closer to a real display list) either.

And neither QPainterPath nor QPicture are really hierarchical. About the only
way to think of a hierarchy for Qt's drawing system is at the level of 
QPainter, which provides save() / restore() functionality for its state.
All of this structure is implemented by the QPainter(), so as soon as
a QPainter() paints on a QPaintDevice(), what little hierarchy was there
is irretrieveably lost.

So Qt would benefit from having real, hierarchical display lists, which could
then be expanded to include 3D functionality. Trolls may well be working
on this (I hope they do!), but it's no small feat to have it done in a way
which "just works" like most of Qt does.

Qt is not bug free, and a colleague of mine is hard at work bugging the trolls
with a new (mostly event-related) bug every week (not kidding you). But he
really runs into some corner/less-than-well-documented cases due to what
he's trying to do. Yet that's still way better than dealing with a toolkit
that's fairly new (MPC) or something that gives you 10% of the functionality
you need.

Cheers, Kuba


  reply	other threads:[~2008-11-05 15:44 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-20 13:19 Kuba Ober
2008-10-20 13:37 ` [Caml-list] " Mark Shinwell
2008-10-20 14:05   ` Thomas Gazagnaire
2008-10-20 15:45     ` Robert Morelli
2008-10-20 15:56       ` David Teller
2008-10-20 17:15         ` Yitzhak Mandelbaum
2008-10-20 20:51           ` Maxence Guesdon
2008-10-21 13:04         ` Jean-Marie Gaillourdet
2008-10-20 20:15       ` Richard Jones
2008-10-20 20:32         ` Kuba Ober
2008-10-20 23:02         ` Robert Morelli
2008-10-21  2:22           ` Peng Zang
2008-10-21 16:57           ` Christian Stork
2008-10-21 12:16       ` tags (Was: [Caml-list] What does Jane Street use/want for an IDE? What about you?) Florian Hars
2008-10-20 20:16     ` [Caml-list] What does Jane Street use/want for an IDE? What about you? Kuba Ober
2008-10-20 14:33   ` Andres Varon
2008-10-20 19:54     ` Peng Zang
2008-10-20 14:47 ` Martin Jambon
2008-10-20 20:14   ` Kuba Ober
2008-10-21 13:14 ` Dmitry Bely
2008-10-21 13:50   ` Hugo Ferreira
2008-10-21 18:35     ` Kuba Ober
2008-10-21 19:31       ` Till Varoquaux
2008-10-21 20:26         ` Philippe Strauss
2008-10-22 12:42           ` Kuba Ober
2008-10-22 21:56             ` David Teller
2008-10-22 22:39               ` David Teller
2008-10-23  7:47             ` Hugo Ferreira
2008-10-23  8:27               ` Romain Bardou
2008-10-23 10:13                 ` Thomas Gazagnaire
2008-10-23 11:01                   ` Hugo Ferreira
2008-10-23 14:13                     ` Vincent Hanquez
2008-10-23 14:43                       ` Romain Bardou
2008-10-23 15:22                         ` Dave Benjamin
2008-10-25 10:14                           ` DooMeeR
2008-10-25 12:05                             ` Jacques Garrigue
2008-10-25 12:43                             ` Martin Jambon
2008-10-25 13:22                               ` Daniel Bünzli
2008-10-25 23:08                                 ` Indentation (was Re: [Caml-list] What does Jane Street use/want for an IDE? What about you?) Martin Jambon
2008-10-26 16:23                                   ` Daniel Bünzli
2008-10-26 19:41                                     ` Martin Jambon
2008-10-23 17:20                       ` [Caml-list] What does Jane Street use/want for an IDE? What about you? Kuba Ober
2008-10-23 17:17               ` Kuba Ober
2008-10-23  0:22         ` Peng Zang
     [not found] ` <200810221330.11103.ober.14@osu.edu>
     [not found]   ` <D3D47C54-888B-4F14-9C5D-79FF3D9F96D6@gmail.com>
2008-10-23 17:13     ` Kuba Ober
2008-11-01  1:41 ` Jon Harrop
2008-11-03 14:15   ` Kuba Ober
2008-11-03 23:11     ` Jon Harrop
2008-11-04 18:35       ` Kuba Ober
2008-11-04 23:36         ` Jon Harrop
2008-11-04 23:06           ` Kuba Ober
2008-11-05  5:48             ` Jon Harrop
2008-11-05  8:53               ` Paolo Donadeo
2008-11-05 15:01                 ` Jon Harrop
2008-11-05 15:05                   ` Kuba Ober
2008-11-05 16:56                     ` Jon Harrop
2008-11-05 14:58               ` Kuba Ober
2008-11-05 15:20               ` Kuba Ober
2008-11-05 16:39                 ` Jon Harrop
2008-11-05 15:55                   ` Kuba Ober
2008-11-05 17:08                     ` Jon Harrop
2008-11-05 17:36                       ` Jon Harrop
2008-11-15 13:02                 ` Jon Harrop
2008-11-15 12:25                   ` Richard Jones
2008-11-15 20:41                     ` Jon Harrop
2008-11-16 12:04                       ` Florent Monnier
2008-11-05  8:39           ` Paolo Donadeo
2008-11-05 15:44             ` Kuba Ober [this message]
2008-11-05 17:03               ` Jon Harrop
2008-11-05 16:41                 ` Kuba Ober
2008-11-05 16:46             ` Jon Harrop
2008-11-05 16:33           ` Jérémie Dimino
2008-11-05 16:43             ` Kuba Ober
2008-11-05 17:41             ` Jon Harrop
2008-10-23 13:53 Baudet David
2008-10-24  7:17 ` Maxence Guesdon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200811051044.25761.ober.14@osu.edu \
    --to=ober.14@osu.edu \
    --cc=caml-list@yquem.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).