GUI Design

Introduction

TODO: Write this section.

Task Bar

Requirements

From the task bar, the following is required:

  • Overview of currently running processes - This should be used to know what is currently running on the system and to switch between tasks.
  • Ability to access available programs on disk - Users should use this as a central hub for running programs.
  • The time down to the second - this is for showing the user that the system is still active without having to have any loading, etc.

Definition

  • 16 bit colour - allows all VGA implementations to display the colours.
  • 320 x 240 - lowest supported VGA colour implementation, meaning very low end displays may display the pixels easily.

Implementation

The button layout

The button layout

Here we can see the taskbar showing the layout, with blue boxes representing characters that will always remain the same and red characters representing characters that are expected to change.

A plain example of a taskbar

A plain example of a taskbar

This gives us another view, where the character blocks are missing, showing the underlying design of the project.

A fuller example of the taskbar

A fuller example of the taskbar

This is yet another view, where we get to see clearly the intended use for the various sections, but also without each task being fully populated.

Windows

Requirements

TODO: Write this section.

Definition

TODO: Write this section.

Implementation

TODO: Write this section.

ASCII Characters

Requirements

For the GUI ASCII characters, we have the following requirements:

  1. Each character should be less than 2 bytes each
  2. Each visible character should be minimalistic
  3. Each character should be represented by a bit mask

Definition

The bit mask is converted from pixels to bytes in the following way:

 _____ _____ _____
|     |     |     |
|  a  |  b  |  c  |
|_____|_____|_____|
|     |     |     |
|  d  |  e  |  f  |
|_____|_____|_____|
|     |     |     |
|  g  |  h  |  i  |
|_____|_____|_____|
|     |     |     |
|  j  |  k  |  l  |
|_____|_____|_____|
|     |     |     |
|  m  |  n  |  o  |
|_____|_____|_____|

Each of the bits, { a, b, c, d, e, f, g, h, i, k, l, m, n, o }, represents a value in the set { 0, 1 } (binary). The bits in the bytes are structured in the following way:

character = { { a, b, c, d, e, f, g, h }, { i, j, k, l, m, n, o, 0 } }

Implementation

0 000 0 001 0 002 0 003 0 004

0 005 0 006 0 007 0 008 0 009

0 010 0 011 0 012 0 013 0 014

0 015 0 016 0 017 0 018 0 019

0 020 0 021 0 022 0 023 0 024

0 025 0 026 0 027 0 028 0 029

0 030 0 031 32 032 33 033 34 034

35 035 36 036 37 037 38 038 39 039

40 040 41 041 42 042 43 043 44 044

45 045 46 046 47 047 48 048 49 049

50 050 51 051 52 052 53 053 54 054

55 055 56 056 57 057 58 058 59 059

60 060 61 061 62 062 63 063 64 064

65 065 66 066 67 067 68 068 69 069

70 070 71 071 72 072 73 073 74 074

75 075 76 076 77 077 78 078 79 079

80 080 81 081 82 082 83 083 84 084

85 085 86 086 87 087 88 088 89 089

90 090 91 091 92 092 93 093 94 094

95 095 96 096 0 097 0 098 0 099

0 100 0 101 0 102 0 103 0 104

0 105 0 106 0 107 0 108 0 109

0 110 0 111 0 112 0 113 0 114

0 115 0 116 0 117 0 118 0 119

0 120 0 121 0 122 123 123 124 124

125 125 126 126 0 127