﻿__group__	ticket	summary	component	version	type	owner	status	created	_changetime	_description	_reporter
 Release	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
 Release	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
 Release	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
 Release	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
 Release	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
 Release	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
 Release	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
1.8.0 Release	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.8.0 Release	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.8.0 Release	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.8.0 Release	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
1.8.0 Release	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
1.8.0 Release	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.8.0 Release	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
	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
