[MKHIVE/USETUP]
[reactos.git] / reactos / base / setup / usetup / interface / consup.c
index c08e3e7..6c74040 100644 (file)
@@ -12,9 +12,9 @@
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 /*
  * COPYRIGHT:       See COPYING in the top level directory
@@ -128,6 +128,12 @@ CONSOLE_ConOutPrintf(
                NULL);
 }
 
+BOOL
+CONSOLE_Flush(VOID)
+{
+       return FlushConsoleInputBuffer(StdInput);
+}
+
 SHORT
 CONSOLE_GetCursorX(VOID)
 {
@@ -197,44 +203,6 @@ CONSOLE_ClearScreen(VOID)
                &Written);
 }
 
-VOID
-CONSOLE_SetStatusText(
-       IN LPCSTR fmt, ...)
-{
-       CHAR Buffer[128];
-       va_list ap;
-       COORD coPos;
-       DWORD Written;
-
-       va_start(ap, fmt);
-       vsprintf(Buffer, fmt, ap);
-       va_end(ap);
-
-       coPos.X = 0;
-       coPos.Y = yScreen - 1;
-
-       FillConsoleOutputAttribute(
-               StdOutput,
-               BACKGROUND_WHITE,
-               xScreen,
-               coPos,
-               &Written);
-
-       FillConsoleOutputCharacterA(
-               StdOutput,
-               ' ',
-               xScreen,
-               coPos,
-               &Written);
-
-       WriteConsoleOutputCharacterA(
-               StdOutput,
-               Buffer,
-               (ULONG)strlen(Buffer),
-               coPos,
-               &Written);
-}
-
 VOID
 CONSOLE_InvertTextXY(
        IN SHORT x,
@@ -384,6 +352,110 @@ CONSOLE_SetUnderlinedTextXY(
                &Written);
 }
 
+VOID
+CONSOLE_SetStatusText(
+       IN LPCSTR fmt, ...)
+{
+       CHAR Buffer[128];
+       va_list ap;
+       COORD coPos;
+       DWORD Written;
+
+       va_start(ap, fmt);
+       vsprintf(Buffer, fmt, ap);
+       va_end(ap);
+
+       coPos.X = 0;
+       coPos.Y = yScreen - 1;
+
+       FillConsoleOutputAttribute(
+               StdOutput,
+               BACKGROUND_WHITE,
+               xScreen,
+               coPos,
+               &Written);
+
+       FillConsoleOutputCharacterA(
+               StdOutput,
+               ' ',
+               xScreen,
+               coPos,
+               &Written);
+
+       WriteConsoleOutputCharacterA(
+               StdOutput,
+               Buffer,
+               (ULONG)strlen(Buffer),
+               coPos,
+               &Written);
+}
+
+VOID
+CONSOLE_SetStatusTextX(
+    IN SHORT x,
+       IN LPCSTR fmt, ...)
+{
+       CHAR Buffer[128];
+       va_list ap;
+       COORD coPos;
+       DWORD Written;
+
+       va_start(ap, fmt);
+       vsprintf(Buffer, fmt, ap);
+       va_end(ap);
+
+       coPos.X = 0;
+       coPos.Y = yScreen - 1;
+
+       FillConsoleOutputAttribute(
+               StdOutput,
+               BACKGROUND_WHITE,
+               xScreen,
+               coPos,
+               &Written);
+
+       FillConsoleOutputCharacterA(
+               StdOutput,
+               ' ',
+               xScreen,
+               coPos,
+               &Written);
+
+    coPos.X = x;
+
+       WriteConsoleOutputCharacterA(
+               StdOutput,
+               Buffer,
+               (ULONG)strlen(Buffer),
+               coPos,
+               &Written);
+}
+
+VOID
+CONSOLE_SetStatusTextAutoFitX(
+    IN SHORT x,
+       IN LPCSTR fmt, ...)
+{
+       CHAR Buffer[128];
+    DWORD Length;
+       va_list ap;
+
+       va_start(ap, fmt);
+       vsprintf(Buffer, fmt, ap);
+       va_end(ap);
+
+    Length = (ULONG)strlen(Buffer);
+
+    if (Length + x <= 79)
+    {
+        CONSOLE_SetStatusTextX (x , Buffer);
+    }
+    else
+    {
+        CONSOLE_SetStatusTextX (79 - Length , Buffer);
+    }
+}
+
 VOID
 CONSOLE_SetInvertedTextXY(
        IN SHORT x,
@@ -514,4 +586,88 @@ CONSOLE_PrintTextXYN(
        }
 }
 
+VOID
+CONSOLE_SetStyledText(
+       IN SHORT x,
+       IN SHORT y,
+       IN INT Flags,
+       IN LPCSTR Text)
+{
+       COORD coPos;
+       DWORD Length;
+
+       coPos.X = x;
+       coPos.Y = y;
+
+       Length = (ULONG)strlen(Text);
+
+    if (Flags & TEXT_TYPE_STATUS)
+       {
+               coPos.X = x;
+               coPos.Y = yScreen - 1;
+       }
+    else /* TEXT_TYPE_REGULAR (Default) */
+    {
+        coPos.X = x;
+               coPos.Y = y;
+    }
+
+    if (Flags & TEXT_ALIGN_CENTER)
+       {
+               coPos.X = (xScreen - Length) /2; 
+       }
+    else if(Flags & TEXT_ALIGN_RIGHT)
+       {
+               coPos.X = coPos.X - Length; 
+
+               if (Flags & TEXT_PADDING_SMALL)
+               {
+                       coPos.X -= 1;
+               }
+               else if (Flags & TEXT_PADDING_MEDIUM)
+               {
+                       coPos.X -= 2; 
+               }
+               else if (Flags & TEXT_PADDING_BIG)
+               {
+                       coPos.X -= 3;
+               }
+       }
+       else /* TEXT_ALIGN_LEFT (Default) */
+       {
+               if (Flags & TEXT_PADDING_SMALL)
+               {
+                       coPos.X += 1;
+               }
+               else if (Flags & TEXT_PADDING_MEDIUM)
+               {
+                       coPos.X += 2; 
+               }               
+               else if (Flags & TEXT_PADDING_BIG)
+               {
+                       coPos.X += 3;
+               }
+       }
+
+       if (Flags & TEXT_TYPE_STATUS)
+       {
+        CONSOLE_SetStatusTextX(coPos.X, Text);
+       }
+    else /* TEXT_TYPE_REGULAR (Default) */
+    {
+        if (Flags & TEXT_STYLE_HIGHLIGHT)
+           {
+            CONSOLE_SetHighlightedTextXY(coPos.X, coPos.Y, Text);
+           }
+        else if (Flags & TEXT_STYLE_UNDERLINE)
+           {
+            CONSOLE_SetUnderlinedTextXY(coPos.X, coPos.Y, Text);
+           }
+        else /* TEXT_STYLE_NORMAL (Default) */
+        {
+            CONSOLE_SetTextXY(coPos.X, coPos.Y, Text);
+        }
+    }
+}
+
 /* EOF */