Difference between revisions of "CIO 20133 Release 0.2 - OOP344"
(→Tester Program) |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{OOP344 Index | 20133}} | {{OOP344 Index | 20133}} | ||
− | + | ||
=CFrame= | =CFrame= | ||
The code for this class is provided the repository of your team. You must understand and use it to develop your core classes in your repository. | The code for this class is provided the repository of your team. You must understand and use it to develop your core classes in your repository. | ||
Line 7: | Line 7: | ||
CFrame also, before displaying itself on the screen, will save the area it is about to cover, so it can re-display them to hide itself. | CFrame also, before displaying itself on the screen, will save the area it is about to cover, so it can re-display them to hide itself. | ||
− | CFrame is base of all | + | CFrame is the base of all the classes in our user interface system. |
<big><syntaxhighlight lang="cpp"> | <big><syntaxhighlight lang="cpp"> | ||
Line 159: | Line 159: | ||
===CFrame Help/Questions Blogs=== | ===CFrame Help/Questions Blogs=== | ||
===CFrame Blog Posts=== | ===CFrame Blog Posts=== | ||
+ | |||
=To Do= | =To Do= | ||
No coding is involved in this release. | No coding is involved in this release. | ||
==task== | ==task== | ||
− | All team members must clone the repository and test the execution of CFrame: | + | # Create your teampage using [[Teamp Page Template - OOP344 20133|this template]]. |
− | # Branch the master for | + | #: '''NOTE: Do not edit this page as your team page, just copy the content and create a new page by clicking on your team name''' |
− | # Compile, run and test the execution | + | # Select one of the team member's console.cpp and console.h |
− | # Add your | + | #: That team member should branch and clone the repository, add console.cpp and console.h to the files in the repository, compile, run and test the execution. When done this team member should add her/his name, github id and the date and time of the completion (as a comment) to cframe.h and merge the branch back to the master repo and push the changes up to github. |
− | # Merge the branch back into the master branch. | + | #All other team members must clone the repository and test the execution of CFrame: |
− | # Push the changes to github | + | ## Branch the master for review with a proper name. |
+ | ## Compile, run and test the execution. | ||
+ | ## Add a comment with your, github id and date and time to the top of '''cframe.h''' header file. | ||
+ | ## Merge the branch back into the master branch. | ||
+ | ## Push the changes to github. | ||
+ | |||
==Due Date== | ==Due Date== | ||
− | + | All branches must be merged back to master by Sunday Oct 20th, 23:59 and master repository should be fully compiled and the execution tested. | |
+ | |||
=Tester Program= | =Tester Program= | ||
− | Test1Frame.cpp (is | + | Test1Frame.cpp (is in your team's repository) |
+ | == Tester Demo == | ||
+ | To make sure your tester is running correctly check the tester demo by logging to matrix.senecacollege.ca using putty and running the following: | ||
+ | $ ~fardad.soleimanloo/t1 |
Latest revision as of 10:21, 18 October 2013
OOP344 | Weekly Schedule | Student List | Teams | Project | Student Resources
Contents
CFrame
The code for this class is provided the repository of your team. You must understand and use it to develop your core classes in your repository.
CFrame class is responsible to create a frame or structure in which all user interface classes contain themselves. It can draw a border around it self or be border-less. CFrame also, before displaying itself on the screen, will save the area it is about to cover, so it can re-display them to hide itself.
CFrame is the base of all the classes in our user interface system.
/*
Add your names under fardad's name:
Reviewed by: (Team member names and date of review)
Full Name, Github id, date
Fardad Soleimanloo, fardad, Oct 03 2013 - 22:34
*/
#include "ciogh.h"
namespace cio{
class CFrame{
int _row;
int _col;
int _height;
int _width;
char _border[9];
bool _visible;
CFrame* _frame;
char* _covered;
void setLine(char* line, char left, char fill, char right)const;
void capture();
void free();
protected:
int absRow()const;
int absCol()const;
public:
CFrame(int Row=-1, int Col=-1, int Width=-1,int Height=-1,
bool Visible = false,
const char* Border=C_BORDER_CHARS,
CFrame* Frame = (CFrame*)0);
virtual void draw(int fn=C_FULL_FRAME);
virtual void move(CDirection dir);
virtual void move();
virtual void hide();
virtual ~CFrame();
/* setters and getters: */
bool fullscreen()const;
void visible(bool val);
bool visible()const;
void frame(CFrame* theContainer);
CFrame* frame();
void row(int val);
int row()const;
void col(int val);
int col()const;
void height(int val);
int height()const;
void width(int val);
int width()const;
void refresh();
};
}
Properties
int _row, holds the relative coordinate of top row of this border with respect to its container.
int _col, same as _row, but for _col.
int _height, height of the entity.
int _width, width of the entity.
char _border[9], characters used to draw the border:
- _border[0], left top
- _border[1], top side
- _border[2], right top
- _border[3], right side
- _border[4], right bottom
- _border[5], bottom side
- _border[6], bottom left
- _border[7], left side
bool _visible; Indicates if the border surrounding the entity is to be drawn or not.
CFrame* _frame; holds the container (another CFrame) which has opened this one (owner or container of the current CFrame). _frame will be NULL if this CFrame does not have a container, in which case, it will be full screen and no matter what the values of row, col, width and height are, CFrame will be Full Screen (no border will be drawn)
char* _covered; is a pointer to a character array that hold what was under this frame before being drawn. When the CFrame wants to hide itself, it simple copies the content of this array back on the screen on its own coordinates.
Methods and Constructors
Private Methods
void capture();
- if _covered pointer is not pointing to any allocated memory, it will call the iol_capture function to capture the area that is going to be covered by this frame and keeps its address in _covered.
Protected Methods
- int absRow()const; calculates the absolute row (relative to the left top corner of the screen) and returns it.
- it returns the sum of row() of this border plus all the row()s of the _frames
- int absCol()const; calculates the absolute column(relative to the left top corner of the screen) and returns it.
- it returns the sum of col() of this border plus all the col()s of the _frames
Public Methods
CFrame(int Row=-1, int Col=-1, int Width=-1,int Height=-1,
bool Visible = false,
const char* Border=C_BORDER_CHARS,
CFrame* Frame = (CFrame*)0);
- Sets the corresponding attributes to the incoming values in the argument list and set _covered to null
virtual void draw(int fn=C_FULL_FRAME);
- First it will capture() the coordinates it is supposed to cover
- If frame is fullscreen() then it just clears the screen and exits.
Otherwise:
- If the _visible flag is true, it will draw a box at _row and _col, with size of _width and _height using the _border characters and fills it with spaces. Otherwise it will just draw a box using spaces at the same location and same size.
virtual void move(CDirection dir);
First it will hide the Frame, then adjust the row and col to move to the "dir" direction and then draws the Frame back on screen.
virtual void hide();
using iol_restore()it restores the characters behind the Frame back on screen. It will also free the memory pointed by _covered;
virtual ~CFrame();
It will make sure allocated memories are freed.
bool fullscreen()const;
void visible(bool val);
bool visible()const;
void frame(CFrame* theContainer);
CFrame* frame();
void row(int val);
int row()const;
void col(int val);
int col()const;
void height(int val);
int height()const;
void width(int val);
int width()const;
These functions set and get the attributes of the CFrame.
CFrame Student Resources
CFrame Help/Questions Blogs
CFrame Blog Posts
To Do
No coding is involved in this release.
task
- Create your teampage using this template.
- NOTE: Do not edit this page as your team page, just copy the content and create a new page by clicking on your team name
- Select one of the team member's console.cpp and console.h
- That team member should branch and clone the repository, add console.cpp and console.h to the files in the repository, compile, run and test the execution. When done this team member should add her/his name, github id and the date and time of the completion (as a comment) to cframe.h and merge the branch back to the master repo and push the changes up to github.
- All other team members must clone the repository and test the execution of CFrame:
- Branch the master for review with a proper name.
- Compile, run and test the execution.
- Add a comment with your, github id and date and time to the top of cframe.h header file.
- Merge the branch back into the master branch.
- Push the changes to github.
Due Date
All branches must be merged back to master by Sunday Oct 20th, 23:59 and master repository should be fully compiled and the execution tested.
Tester Program
Test1Frame.cpp (is in your team's repository)
Tester Demo
To make sure your tester is running correctly check the tester demo by logging to matrix.senecacollege.ca using putty and running the following:
$ ~fardad.soleimanloo/t1