Skip to content

A collaborative poster project for Southwestern University's Computer Science Club in 2023

Notifications You must be signed in to change notification settings

SU-CS-Club/CollaborativePoster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SU CS Club Collaborative Poster

This is an experiment to work on a collaborative CS Club poster.

The goal is to have a large amount of students contribute a "Manipulator" to the project, and with enough submissions, a poster can be divided up into sections and each student will have their code affecting a small part of a larger CS poster, creating a mosaic somewhat like a digital collaborative quilt.

How to get started using a terminal without graphics support (like GitHub codespaces)

This approach provides fewer options and interactivity than what is shown below, but you can still participate. Simply run the class PosterMain and 2 files, modified.jpg and poster.jpg will be created in your project directory that you can view.

  • modified.jpg shows the test image modified by the Manipulator defined by the lastSelected option in the poster.cfg
  • poster.jpg shows a preview of what the poster looks like using all available manipulators with default configurations.

For instructions on adding a new Manipulator classes, see below.

How to get started using an IDE on your personal machine

Running the PosterMain class will open a simple GUI to test every Manipulator.

image

To make your own Manipulator, simply create a new class file in the src/manipulators directory which extends the abstract Manipulator (If you need to, take a look at the example files in that same directory). Once created, your Manipulator will be automatically detected and show up in the dropdown when you run PosterMain.

What is a Manipulator?

Manipulators are classes designed to manipulate the pixels of a black and white image. Each Manipulator is passed an image, and should output another image that has been processed. Simple Manipulators will only need to modify the getColorAtPoint() method, which modifies based on x and y coordinates. If you'd like to do a more complex pattern, you may want to override the transformImage() method instead, which will let you process pixels or groups of pixels in different ways than the default.

I highly encourage checking out the Manipulator class and the example classes to figure out how everything works.

The Display Panel

image

Through the dropdown menu, you are able to select a Manipulator to view and test. The two images displayed in this window represent the input (the left image), and the image after being passed through the Manipulator (the right image).

The "Generate New Random" button will generate a new random seed and regenerate the image. If your manipulator uses randomness, this will allow you view different possible outcomes.

The "Preview Big Image" button will allow you to see what the larger poster might look like with multiple Manipulators selected.

The Preview Panel

image

By changing the two numbers in the top right, you can change the number of rows and columns in the image, which as more Manipulators are added may be necessary to see all of them.

Pressing the "Save Image" button will export the current mosaic being displayed into the project directory in the "output" folder. These images are marked with the current date and time, so you can save multiple images and not worry about them overwriting each other.

The list of checkboxes will allow you to toggle on/off specific manipulators in the mosaic, in case you want to exclude some Manipulators or view only a specific set of Manipulators.

Contributing a Manipulator

To add your Manipulator to the project, you should fork this repository, and then create a pull request, which can then be accepted and merged.

Before you make your PR, make sure all files you're committing have an @author tag in a comment at the top of your files! Check some of the other Manipulators for examples on how to do it!

Extra Info

If you need assistance with code or GitHub or have any questions about anything, ask them in the CS Club Discord in the "#collaborative-poster" channel, and someone will be able to help you.

If you come across a bug, crash, or error in the program, or would like to suggest a feature in the program, make an issue at this link!

I will be updating this README as more features are added.

About

A collaborative poster project for Southwestern University's Computer Science Club in 2023

Resources

Stars

Watchers

Forks

Languages