uci-sdcl/CalicoClient — pull request #84 by waynehuang3 (2012-04-24 05:51:41+00:00)
Title: Major temp scrap/image/synchronization update

*Issue #80: Server now removes a user's temp scrap if the user quits/disconnects
*Issue #81: Server now properly reports temporary scraps to joining client
*Issue #82: Copy/Move canvas now ignores temp scraps and all their children.
-The stroke that creates a temp scrap no longer because "hidden" by changing its visibility. That was causing a variety of issues. It is now deleted outright and reloaded when needed. This way there is no invisible stroke. The server was unaware of its visibility and this caused problems before when a new user joins.
-Many other fixes/changes to temporary scrap behavior. It should now be less likely (if not impossible) for different clients to affect each other's temporary scraps (other than clearing canvas)

*Issue #27: Many changes made to the way images are loaded.
1. The max image size is now 1920x1080 (The client will alert the user if the image is too large)
2. On the server, images are never loaded into memory anymore (no more running out of memory on server)
3. On the client, images are loaded dynamically when needed and removed from memory when not needed. On the grid they are loaded to generate the cell previews and unloaded immediately. On the canvases only the active canvas' images are loaded in memory. A client loading an image in one canvas will no longer cause all other clients to load that image even if those clients are not viewing the canvas.
4. Images are now always downloaded to the client from the server before attempting to load them into memory (no streaming from URL).
-Clients will no longer see their own usernames in the grid view. Previously this was only possible because of a bug. However, the canvas they were most recently active in will have a dark gray background color for the user to identify (Potentially can change BG color for multiple cells with varying gradient to indicate history. Let's discuss first based on impressions.)
-Fixed strokes not being "finished" and leaving their hit circles if the mouse is "upped" in the menu bars. It will correct itself on the next mouse down event on the canvas.
-Moved arrow icon to be grouped with pen sizes to indicate mutual exclusivity.
-Fixed even more lost sync bugs.
-Hit circle offset distance reduced from 50 to 25.
-When a client disconnects and reconnects, it now notifies the server of what canvas it is in because the server loses track after a disconnect.