a guest Oct 21st, 2019 87 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. - Identifies you and your programming partner by name:
  2.         Corey Maroney,
  3.         Luke Miller
  5. – Acknowledges help you may have received from or collaborative work
  6. you may have undertaken with classmates, programming partners,
  7. course staff, or others (ask me sometime about Otis the debugging
  8. dog)
  9.         Help received for this program was solely based between each of us as partners,
  10.         with the exception of strictly conceptual/theory based google inquiries.
  12. – Identifies what has been correctly implemented and what has not
  13.         Within our program, we implemented the UArra2b.c blocking for our flat array properly, but struggled with writing
  14.         the image. On small images, our interface works. On larger images, our interface begins performing some unusual actions.
  15.         In the marbles.ppm example, we run the file without error, but using "-rotate 0", the images (0, 0) point is located
  16. – Contains the critical parts of your design checklists
  17. ----------------------------------------Part A Checklist----------------------------------------------
  18.         When our representation satisfies the invariants specified, it has the ability to store information
  19.         within a specified block at the appropriate index, retrieve information that has been stored within
  20.         a block at (i, j), and manipulate said information to suit a variety of needs.
  22.     Correctly Implement:  
  23.         [X] UArray2b_new (int width, int height, int size, int blocksize)
  24.                 Creates and returns a new UArray2b_T object with specified width, height, data type size, and block size.
  25.         [X] UArray2b_new_64k_block(int width, int height, int size)
  26.                 Creates and returns a new UArray2b_T object with a blocksize as large as possible provided.
  27.                 At most, a block will occupy 64KB.
  28.         [X] UArray2b_free (UArray2b_T *array2b)
  29.                 Frees the memory allocated for the UArray2b_T passed as a parameter.
  30.         [X] UArray2b_width (UArray2b_T array2b)
  31.                 Returns the width of the UArray2b_T passed as a parameter.
  32.         [X] UArray2b_height (UArray2b_T array2b)
  33.                 Returns the height of the UArray2b_T passed as a parameter.
  34.         [X]  UArray2b_size (UArray2b_T array2b)
  35.                 Returns the size of the UArray2b_T passed as a parameter.
  36.         [X] UArray2b_blocksize (UArray2b_T array2b)
  37.                 Returns the blocksize of the UArray2b_T passed as a parameter.
  38.         [X] *UArray2b_at(UArray2b_T array2b, int i, int j)
  39.                 Returns a pointer to the cell found at row i and column j as specified by the parameters.
  40.                 If this cell is out of range or inaccessible, a checked runtime error will occur.
  41.         [X] UArray2b_map(Uarray2b_T array2b, void apply(int i, int j, UArray2b_T array2b, void *elem, void *cl), void *cl)
  42.                 Visits every cell in a block and calls the apply function passed as a parameter,
  43.                 then moves onto the next block and does the same.
  46. ----------------------------------------Part C Checklist----------------------------------------------
  47.     Specifically, the code we write for ppmtrans will extend the functionality built in a2plain.c.
  48.     Processing the data passed depends on the particular data. In any case it’ll be transforming the
  49.     given image using the specified rotate tag, passing the image through the ppmtrans program.
  51.     [X] Determine prototypes which need to be accommodated within a2plain.c,
  52.         in order to properly support two-dimensional arrays
  53.     [X] Iterate through boilerplate and add the commented functionality to give us our flexibility working with the arrays.
  54.         Importantly, note the difference in the map functions and how they traverse the cells.
  55.         Carefully mediate the different function prototypes.
  56.     [X] Insure functionality from new through at is correctly built, importantly also freeing the buffer.
  57.     [X] Create static function that calls into UArray2. In order to use our method suite,
  58.         we’ll insert pointers to those functions into a struct.
  59.     [X] Extend ppmtrans implementation by adding -rotation 90 functionality. Our previously made
  60.         data structures and interfaces will finally be utilized here.
  61.     [X] Again extend implementation by adding -rotation 180 functionality, building on -rotation 90.
  62.         Properly handle errors for unimplemented options and invalid requests.
  63.     [X] Implement -rotate 0, -rotate 270, -flip, and -transpose functionality
  68. - Says approximately how many hours you have spent completing the assignment
  69.     [X] 45 Hours
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand