From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id LAA17178; Tue, 18 Jun 2002 11:48:36 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA17280 for ; Tue, 18 Jun 2002 11:48:35 +0200 (MET DST) Received: from madiran.inria.fr (madiran.inria.fr [128.93.8.77]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g5I9mWP03574; Tue, 18 Jun 2002 11:48:32 +0200 (MET DST) Received: from localhost (madiran.inria.fr [128.93.8.77]) by madiran.inria.fr (Postfix) with ESMTP id 0150DA78AA; Tue, 18 Jun 2002 11:48:31 +0200 (CEST) Date: Tue, 18 Jun 2002 11:48:31 +0200 (CEST) Message-Id: <20020618.114831.1025221351.Jun.Furuse@inria.fr> To: nicolas.francois@free.fr Cc: caml-list@inria.fr, ecc@cmu.edu, Andreas.Eder@t-online.de Subject: [Caml-list] Re: Problem with Graph module From: "Jun P.FURUSE" In-Reply-To: <20020617194701.62f989bf.nicolas.francois@free.fr> References: <20020617031219.2dd51ec3.nicolas.francois@free.fr> <20020617.152309.424257368.Jun.Furuse@inria.fr> <20020617194701.62f989bf.nicolas.francois@free.fr> X-URL: http://pauillac.inria.fr/~furuse/ X-Face: %NBEt80q,?D$3WNc|UEDB(`B%4yRMn~m!-wQF`!QA@=cZ~?MZJwomF~)69N/W6e/n1),d X-Mailer: Mew version 2.2 on XEmacs 21.4.6 (Common Lisp) Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hello, I thank people who sent their xdpyinfo result. > Le Mon, 17 Jun 2002 15:23:09 +0200 (CEST) "Jun P.FURUSE" > a =E9crit : > = > > Hello, > > = > > > if (point_color ma_fourmi.x ma_fourmi.y) =3D white > > > is allways false under Ocaml. > > = > > If the following code says "BUG" in your environment, I am afraid t= hat > > there is a bug inside the graphics library. In such case, could you= > > send me the result of the command xdpyinfo in your environment ? = > > = > > (* ocamlc -o testgraphics graphics.cma testgraphics.ml *) > > open Graphics > > let _ =3D = > > open_graph ""; > > if point_color 0 0 =3D white then = > > prerr_endline "OK" > > else prerr_endline "BUG" > > ;; I verified that this code prints out "BUG" when X display has less than 24bits color depth. In such environment, the colour mapping from Graphics to X is not one-to-one. This means that point_color may not always return the exact colour which you drew on the screen. = For example, in an X display of 15bpp, the Graphics colour 0xffffff and 0xf8f8f8 are translated to the same X white colour. = This is also true for the default white background color of Graphics. = point_color returns 0xf8f8f8, not 0xffffff, this is why the above code prints out "BUG". In Camllight, the translation between Caml colour and X colour performs communication between programs and the X server. Since it is highly expensive operation, the colour translation of O'Caml Graphics is rewritten, so that it would never ask the X server about colours. It improves the speed of colour query impressively. = Unfortunately, the both colour translation code do not return always the same result. The different behavior of the Nicolas' O'Caml and Camllight programs can be explained by this difference of colour translation. I think this does not mean the new colour translation of O'Caml is buggy. Even in Camllight, the same things can happen, unless the colour= translation is one-to-one. (It happens less, but not never.) The important things (which should be noted in graphics.mli) are that * you may get different colour index from one you draw, = * the colour indices predefined in Graphics for the basic colours = such as white, blue, red, etc can be just canonical candidate indices for them. You should not compare these colour indices against the colours got from the screen. For example, in Nicolas' program, instead of comparing Graphics.white, we should use the colour index obtained from the screen at the begining of the program: let screen_white =3D point_color 0 0 = (* this can be different from Graphics.white *) Regards, -- Jun ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners