__group__ ticket summary component version type owner status created _changetime _description _reporter 1.3.0 11 Do something about non-convex polygons Rendering 1.3.0 defect new 2010-07-18T09:37:04Z 2011-08-15T01:34:30Z "OpenGL doesn't support them, and we don't either. We should at least say this in the docs. It'd be better to detect non-convex polygons and throw an error at runtime, or to do the actual tesselation. " Ben Lippmeier 1.5.0 27 Eq instance is not compatible with Monoid instance for Picture Unknown 1.5.0 defect new 2012-03-10T04:28:21Z 2012-03-10T04:28:21Z The Monoid instance for Picture obeys neither the identity nor associativity laws when equality is determined by the Eq instance. This could be fixed by either: (a) adding special cases for Blank and Pictures as top-level constructors in the Monoid instance, or (b) flattening the nesting structure implicitly during comparison in the Eq instance. Chris Smith 1.7.0 30 gloss-fluid example stutters on startup Unknown 1.7.0 defect new 2012-05-07T05:54:40Z 2012-05-07T05:54:53Z "On my 2010 !QuadCore iMac, run the following: {{{gloss-fluid --width=400 --scale=3 +RTS -N4 -qg -qa}}} Interactively drawing initial density is smooth, but when I add velocity with the right-mouse button the simulation stutters for about 3 seconds before becoming smooth again. Resetting with 'r' and then drawing again yields the same behaviour. Initialising the initial frame probably takes longer than computing one in free-running mode, and this upsets gloss's frame-rate limiting code. We should fix both problems. " Ben Lippmeier 1.7.0 32 "Spurious ""Invalid Operation"" errors under Windows 7 64-bit" Unknown 1.7.0 defect new 2012-10-13T07:09:25Z 2012-10-13T07:09:25Z "Checking for OpenGL errors after renderPicture yields spurious ""Invalid Operation"" errors. This happens when we call the 'renderPrimitive' function from the OpenGL binding, even with an empty computation. The OSX OpenGL implementation doesn't have a problem. " Ben Lippmeier 1.7.0 33 GLUT doesn't return correct KeyPad events under Linux / XMonad Unknown 1.7.0 defect new 2012-11-08T01:21:53Z 2012-11-08T01:22:23Z "Christopher Howard writes: I've been using gloss in an arcade game I've been writing, and overall everything has been working great. However, it seems as though my program does not receive any events for the key pad (KeyPad0, KeyPad1, etc.) regardless of whether Num Lock is active or not. If Num Lock is off, those keys that have alternate names will receive the appropriate event (!KeyInsert, !KeyLeft, and so forth), but never the !KeyPad events proper. I am developing on an amd64 Gentoo Linux box, using GHC 7.4 and gloss-1.7.6.5, under the xmonad window manager. I have a Microsoft brand ergonomic keyboard operating in standard QWERTY mode. Key pad functionality seems to work fine in text editors (num-lock and non num-lock modes). In case there might be some problem with my application code, I wrote a shorter program which seems to confirm that no !KeyPad* events are being received: {{{ import Graphics.Gloss.Interface.IO.Game data World = World main = playIO (InWindow ""test keypad input"" (1024, 768) (0, 0)) black 20 World (\w -> return Blank) eHandler (\t w -> return w) eHandler (EventKey (SpecialKey KeyPad0) _ _ _) w = undefined eHandler _ w = return w }}} It should crash when key pad button 0 is pressed, but it does not. " Ben Lippmeier 1.7.0 39 Better docs for mixColors Unknown 1.7.0 defect new 2015-01-07T04:31:27Z 2015-01-07T04:31:27Z " From the list: The named tertiary Colors are defined using addColors. For example, orange = addColors yellow red. That gives unexpected results. For example, orange == yellow is True. A more expected result would be if the Colors were mixed in equal ratios. For example: orange = mixColors 0.5 0.5 yellow red > Yeah, it's saturating addition, which is still associative and commutative. I think this is a legitimate operation with respect to physical displays, though perhaps it needs a different name. > The way I think about ""addColors yellow red"" is ""turn on all the lights to make yellow, and all the lights to make red"" .. which still gives you yellow. " Ben Lippmeier 1.7.0 40 When running gloss in GHCi, pressing esc should go back to the GHCi prompt. Unknown 1.7.0 defect new 2017-02-11T10:01:27Z 2017-02-11T10:01:27Z "https://mail.haskell.org/pipermail/haskell-cafe/2017-January/126028.html > GLUT's actionOnWindowClose *does* work, at least it does nowadays " Ben Lippmeier 4 Add commands to run/stop and single step simulation mode. User Interface enhancement new 2010-03-05T02:51:32Z 2011-08-15T01:22:00Z "ANUPlot had these, but support was a bit hacky. Enter should run-stop the simulation. Program should start in stop mode. Use keys 1-5 to step by 1, 10, 100, 1000, 10000 steps each. Same keys should increase the simulation speed in free running mode. " Ben Lippmeier 28 Tweak semantics to emphasize algebraic interpretation Unknown enhancement new 2012-03-12T00:21:08Z 2012-04-10T03:23:30Z "I'd like to see the following changes, which would break backward compatibility, but I think would better emphasize the algebraic interpretation of expressions written in gloss: 1. `color red (color green foo)` should draw `foo` in red, not green. This has an obvious semantics, while the current behavior has to be described as ""color sets a default color that will be used if no other is specified""... or worse yet, as a procedural interpretation - ""it means change colors"". 2. `pictures [ foo, bar ]` should arguably draw foo on top of bar. I've found that students initially expect foo to be on top, and tend to fall back on the procedural explanation - it draws foo first, and then bar - to explain the current order. 3. `rotate` should be counter-clockwise. Okay, this one is out of place because it's not about algebraic interpretations, but in math, rotations are normally counter-clockwise... except in the OpenGL implementation of gloss for some reason. gloss-web has actually always been counter-clockwise, and I only recently noticed the difference." Chris Smith 29 Add a gloss-raster wrapper to inspect an image without animation. User Interface enhancement new 2012-04-10T03:21:51Z 2012-04-10T03:23:10Z "From Dmitry Dzhus {{{ Not sure if I sound reasonable, but didn't you think about adding a playWorld version without stepWorld (typed Float -> world -> world) argument? So that only external events cause the world to change. For cases when computations are intensive, and the «field» doesn't evolve by itself, but only reacts to user events (like changing camera position in raytracer), isn't it wasteful to redraw a world if no events occured? }}} " Ben Lippmeier 3 Add render option commands from ANUPlot User Interface enhancement new 2010-03-05T02:49:47Z 2010-11-23T02:44:20Z ANUPlot allowed the user to force wireframe and monochrome modes, and turn alpha on and off. Port this code across. Ben Lippmeier 8 Add FPS counter / HUD display User Interface enhancement new 2010-03-05T05:13:45Z 2010-11-23T02:42:48Z " Pressing space bar should give help and various options. Support display of FPS counter." Ben Lippmeier 10 add antialiasing Rendering enhancement new 2010-05-07T23:38:59Z 2010-11-23T02:41:50Z "Should be relatively simple to add support for anti-aliasing. The following OpenGL functions would be relevant: glHint(GL_LINE_SMOOTH, GL_NICEST); glHint(GL_POLYGON_SMOOTH, GL_NICEST); glEnable(GL_LINE_SMOOTH); glEnable(GL_POLYGON_SMOOTH); glEnable(GL_BLEND); " ijontichy 1.7.0 34 Add alpha to bitmap Picture constructor Rendering 1.7.0 enhancement new 2012-11-08T01:36:03Z 2012-11-08T01:36:03Z " {{{ data Picture = .. | Bitmap Int Int BitmapData Bool Float }}}" Ben Lippmeier 1.7.0 38 Remove Num Point orphan instance, or at least shift it to a different module. Unknown 1.7.0 enhancement new 2014-11-12T01:07:46Z 2014-11-12T01:07:46Z "This is confusing some people: http://stackoverflow.com/questions/26770247/haskells-type-checker-is-allowing-a-very-wrong-type-replacement-and-the-progra" Ben Lippmeier 1.7.0 31 Graceful handling of projection stack overflow. Rendering 1.7.0 enhancement new 2012-10-02T05:38:58Z 2012-11-08T01:41:12Z "As of gloss 1.7.6.3 we get this error on the console when the projection stack overflows: {{{ Main: Gloss / OpenGL Stack Overflow. This program uses the Gloss vector graphics library, which tried to draw a picture using more nested transforms (Translate/Rotate/Scale) than your OpenGL implementation supports. The OpenGL spec requires all implementations to have a transform stack depth of at least 32, and Gloss tries not to push the stack when it doesn't have to, but that still wasn't enough. You should complain to your harware vendor that they don't provide a better way to handle this situation at the OpenGL API level. To make this program work you'll need to reduce the number of nested transforms used when defining the Picture given to Gloss. Sorry. }}} To completely fix this we would need to implement our own external projection stack, but that wouldn't be as fast as the internal hardware stack. Perhaps we could check the picture before rendering it, and only used the external stack when there are too many nested transforms. Another option might be to detect the stack overflow condition, then pop and save stack frames to memory, before continuing. We'd then have to restore the stack on the way back down. What a hassle. " Ben Lippmeier