User Tools

Site Tools


haas:fall2020:cprog:projects:cos0

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
haas:fall2020:cprog:projects:cos0 [2020/10/19 09:17] – [Submission] wedgehaas:fall2020:cprog:projects:cos0 [2020/10/19 16:13] – [getting started] wedge
Line 53: Line 53:
 Now, gd has functions for drawing circles. You are **NOT** to use them for this project. As I said, this is a circle //of squares//. As such, you will be making use of the **gdImageFilledRectangle()** function. Now, gd has functions for drawing circles. You are **NOT** to use them for this project. As I said, this is a circle //of squares//. As such, you will be making use of the **gdImageFilledRectangle()** function.
  
-====getting started==== 
-You may make use of the following skeleton program to assist you in doing this project. 
- 
-Note that this code is not in conformance with project specifications, but is provided to give you a starting place for modifications and additions: 
- 
-<code c> 
-/* 
- * cos0.c   - skeleton code to use the GD graphics library 
-                        to create an image (circle of squares). 
- * 
- * To compile: type 'make' to compile the program 
-         or: gcc --std=c99 -Wall -o cos0 cos0.c -lgd 
- * To execute: ./cos0 ARGS 
- * 
- * Documentation:  http://www.boutell.com/gd/manual2.0.33.html 
-                 https://libgd.github.io/manuals/2.1.1/index/Functions.html 
- */ 
-#include <stdio.h> 
-#include <stdlib.h> 
-#include <string.h> 
-#include <sys/stat.h> 
-#include <gd.h> 
- 
-// color values 
-// 
-#define BLACK       0 
-#define BLUE        1 
-#define GREEN       2 
-#define RED         3 
-#define WHITE       4 
- 
-int main(int argc, char **argv) 
-{ 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Declare variables 
-        // 
-        char               *outfile;    // name out of the output file 
-        FILE               *out;        // output file pointer 
-        gdImagePtr          img;        // GD Image Construct 
-        unsigned int        color[5];   // color array 
-        unsigned short int  wide, high; // image attributes 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Check arguments 
-        // 
-        if (argc     == 2) 
-        { 
-                outfile   = *(argv+1); 
-                fprintf(stdout, "Using '%s' as output filename\n", outfile); 
-        } 
-        else 
-        { 
-                outfile   = (char *) malloc (sizeof(char) * 64); 
-                sprintf(outfile, "/home/%s/public_html/cos0.png", getenv("USER")); 
-        } 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // image dimensions 
-        // 
-        wide          = 600; 
-        high          = 800; 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Create new image of specified wide-ness and high-ness 
-        // 
-        img           = gdImageCreate(wide, high); 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Some GD color definitions 
-        // 
-        color[BLACK]  = gdImageColorAllocate(img, 0x00, 0x00, 0x00); 
-        color[BLUE]   = gdImageColorAllocate(img, 0x00, 0x00, 0xFF); 
-        color[GREEN]  = gdImageColorAllocate(img, 0x00, 0xFF, 0x00); 
-        color[RED]    = gdImageColorAllocate(img, 0xFF, 0x00, 0x00); 
-        color[WHITE]  = gdImageColorAllocate(img, 0xFF, 0xFF, 0xFF); 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Paint the background black 
-        // 
-        gdImageFilledRectangle(img, 0, 0, wide-1, high-1, color[BLACK]); 
- 
-    /**************************************************************** 
-                                                                  * 
-      =============>  YOUR CODE/PROGRAM GOES HERE  <============  * 
-                                                                  * 
-     ****************************************************************/ 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Open the file 
-        // 
-        out           = fopen(outfile, "wb"); 
-        if(out       == NULL) 
-        { 
-                fprintf(stderr, "Error opening '%s'\n", outfile); 
-                exit(1); 
-        } 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Set sane file permissions on image file 
-        // 
-        chmod (outfile, 0644); 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Send image to file 
-        // 
-        gdImagePngEx(img, out, -1); 
- 
-        ////////////////////////////////////////////////////////////////// 
-        // 
-        // Close things up 
-        // 
-        fclose(out); 
-        gdImageDestroy(img); 
- 
-        return(0); 
-} 
-</code> 
- 
-=====How to view your image===== 
-When you have a functioning project and want to view the images generated, you need to make sure they are deployed into your **public_html/** directory. 
- 
-To view your image in a web browser, simply point it at the following URL: 
- 
-  * <nowiki>https://lab46.g7n.org/~USERNAME/IMAGE.png</nowiki> 
- 
-... where "USERNAME" is your lab46 username (in lowercase), and "IMAGE" is the name of your png file (likely also in lowercase, such as 'cos0'). 
- 
-Note that the tilde just prior to your username in the URL is critical and necessary. 
  
 =====Grabit Integration===== =====Grabit Integration=====
Line 203: Line 66:
 make: Leaving directory '/var/public/SEMESTER/cprog/cos0' make: Leaving directory '/var/public/SEMESTER/cprog/cos0'
 lab46:~/src/cprog$ cd cos0 lab46:~/src/cprog$ cd cos0
-lab46:~/src/cprog/pos0$ ls+lab46:~/src/cprog/cos0$ ls
 Makefile  cos0.c Makefile  cos0.c
-lab46:~/src/cprog/pos0+lab46:~/src/cprog/cos0
 </cli> </cli>
  
Line 218: Line 81:
 NOTE: You do NOT want to do this on a populated **cos0** project directory-- it will overwrite files. Only do this on an empty directory. NOTE: You do NOT want to do this on a populated **cos0** project directory-- it will overwrite files. Only do this on an empty directory.
  
 +=====How to view the picture=====
 +Depending on your computing setup, choose the most practical means of viewing your program's image output:
 +
 +====Raspberry Pi desktop====
 +You've got a monitor and keyboard hooked up to your pi that you are using (preferred method for class).
 +
 +Open a file browser, web browser, or image viewer and navigate to/open up your **cos0.png** image in your **~/src/desig/cos0/** directory.
 +
 +Rinse and repeat as you go through revisions.
 +
 +====Raspberry Pi command-line via SSH/MOSH====
 +You don't have a monitor, so you are logging into your pi remotely (doable, and good intra-system practice)
 +
 +We start by running a successfully-compiled **cos0**:
 +
 +<cli>
 +yourpi:~/src/desig/cos0$ ./cos0
 +</cli>
 +
 +... which will produce an image (**cos0.png**); You want to put this in your web space (with the proper permissions set), so you can view it in a web browser:
 +
 +<cli>
 +yourpi:~/src/desig/cos0$ scp lob0.png yourusername@lab46.g7n.org:public_html/
 +</cli>
 +
 +Note that you will be prompted for your lab46 password.
 +
 +Then over on lab46, run this:
 +
 +<cli>
 +lab46:~$ chmod 0644 ~/public_html/cos0.png
 +</cli>
 +
 +Then, point a web browser at the following URL:
 +
 +  * https://lab46.g7n.org/~yourusername/con0.png
 +
 +NOTE: sometimes the web browser caches previous results, you may have to refresh a few times on revisions to get changes to manifest.
 =====Submission===== =====Submission=====
 To successfully complete this project, the following criteria must be met: To successfully complete this project, the following criteria must be met:
haas/fall2020/cprog/projects/cos0.txt · Last modified: 2020/10/19 16:14 by wedge