CS 242 Fall 2010 : Assignment 1.4

This page last changed on Sep 27, 2010 by cemeyer2.

Creating an Image Editor

You will be creating a simple image editor using the MVC pattern. This editor will have its own graphical user interface (GUI) and will incorporate your image compression code from last week.

Handin requirements

  1. Name your directory ‘Assignment1.4’ in the repository. This is very important. We are using a script to do the svn export and it is important that the name matches exactly.
  2. Do not check in any executables, debug logs, automatically generated doc. If anything can be regenerated, it should not be checked in.
  3. Have a README that describes how to use your editor. Make sure to include three things you would like to improve (i.e. three things you think you did poorly)
  4. The code you present in section must be in Subversion by 8:00AM on Thursday, September 23rd.

MVC (Model View Controller)

For this assignment, you must code your implementation to follow the MVC pattern. Rather than simply repeating what can be found on the internet, here are a few links that we think are worthwhile to read so that you have the proper background:

Note, in your case, your model will probably be the image you are editing, the view will be your gui components. Each view can use a controller to respond to any user input it receives. The controller reacts to its view and sends messages to instigate changes within the model. Remember the views observes its subject – the model. Each controller observes its associated view which is its subject.

Image Editor

You will implement an image editor that is at a minimum capable of, but not limited to the following features:

  1. Loading, displaying and saving images in BMP format.
  2. Loading, displaying and saving images in the compressed format you designed last week.
  3. Zoom in and out on the image.
  4. Resize the image (actually changing the number of pixels).
  5. Rotate the image by an arbitrary amount (clockwise and counterclockwise).
  6. Reflect the image (horizontally and vertically)
  7. Perform image corrections on the image. You should at least have blur, sharpen, colorize and invert. You may substitute the colorize filter for something else if necessary.

Resources

GUI programming can be a potentially daunting experience. Below are some external resources to help get you going.

Rotation

One thing that has caught students in the past on this assignment is properly rotating an image without clipping the corners. When you rotate an image, its rectangular dimensions might increase or decrease. To avoid troubles this semester, here is the code that I used in the past to rotate images without clipping them:

Rotate.java

All the transforms you need will involve objects such as AffineTransform, AffineTransformOp, ConvolveOp, and LookupOp.

Grading

We will use the standard Grading rubric for this assignment.

Criteria Weight Comment
Basic preparation 1  
Cleverness 1  
Code submission 1  
Decomposition 2  
Documentation 1  
Effort 3  
Naming 2  
Overall design 6 Excellent understanding and use of MVC
Participation 2 How you critique others code.
Performance 1  
Personal issue 2 You satisfactorily handled any issues from 1.3
Presentation 2 How you critique your code.
Requirements satisfaction 4 You implement all 6 of the required features of the image editor.
Testing 1  
Document generated by Confluence on Feb 22, 2012 18:13

  1. No comments yet.

  1. No trackbacks yet.