]> git.proxmox.com Git - mirror_edk2.git/commitdiff
A small changing to reduce size for ConSplitter module.
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 23 Nov 2007 09:37:19 +0000 (09:37 +0000)
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 23 Nov 2007 09:37:19 +0000 (09:37 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4326 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c

index d7b32a78bfcce8d2554bd2957980d895ff26bc20..babf3c6cd147948347015006ebd1a7f8e037f3c5 100644 (file)
@@ -90,7 +90,7 @@ STATIC TEXT_IN_SPLITTER_PRIVATE_DATA  mConIn = {
     0x10000, //AbsoluteMaxX\r
     0x10000, //AbsoluteMaxY\r
     0x10000, //AbsoluteMaxZ\r
-    0        //Attributes    \r
+    0        //Attributes\r
   },\r
   0,\r
   (EFI_ABSOLUTE_POINTER_PROTOCOL **) NULL,\r
@@ -117,6 +117,19 @@ STATIC TEXT_IN_SPLITTER_PRIVATE_DATA  mConIn = {
   FALSE\r
 };\r
 \r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UGA_DRAW_PROTOCOL gUgaDrawProtocolTemplate = {\r
+  ConSpliterUgaDrawGetMode,\r
+  ConSpliterUgaDrawSetMode,\r
+  ConSpliterUgaDrawBlt\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_PROTOCOL gGraphicsOutputProtocolTemplate = {\r
+  ConSpliterGraphicsOutputQueryMode,\r
+  ConSpliterGraphicsOutputSetMode,\r
+  ConSpliterGraphicsOutputBlt,\r
+  NULL\r
+};\r
+\r
 STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {\r
   TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
   (EFI_HANDLE) NULL,\r
@@ -141,9 +154,9 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {
     FALSE,\r
   },\r
   {\r
-    ConSpliterUgaDrawGetMode,\r
-    ConSpliterUgaDrawSetMode,\r
-    ConSpliterUgaDrawBlt\r
+    NULL,\r
+    NULL,\r
+    NULL\r
   },\r
   0,\r
   0,\r
@@ -151,9 +164,9 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {
   0,\r
   (EFI_UGA_PIXEL *) NULL,\r
   {\r
-    ConSpliterGraphicsOutputQueryMode,\r
-    ConSpliterGraphicsOutputSetMode,\r
-    ConSpliterGraphicsOutputBlt,\r
+    NULL,\r
+    NULL,\r
+    NULL,\r
     NULL\r
   },\r
   (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) NULL,\r
@@ -204,9 +217,9 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {
     FALSE,\r
   },\r
   {\r
-    ConSpliterUgaDrawGetMode,\r
-    ConSpliterUgaDrawSetMode,\r
-    ConSpliterUgaDrawBlt\r
+    NULL,\r
+    NULL,\r
+    NULL\r
   },\r
   0,\r
   0,\r
@@ -214,9 +227,9 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {
   0,\r
   (EFI_UGA_PIXEL *) NULL,\r
   {\r
-    ConSpliterGraphicsOutputQueryMode,\r
-    ConSpliterGraphicsOutputSetMode,\r
-    ConSpliterGraphicsOutputBlt,\r
+    NULL,\r
+    NULL,\r
+    NULL,\r
     NULL\r
   },\r
   (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) NULL,\r
@@ -578,7 +591,7 @@ Returns:
 \r
   //\r
   // Buffer for Simple Text Input Ex Protocol\r
-  //  \r
+  //\r
   Status = ConSplitterGrowBuffer (\r
              sizeof (EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *),\r
              &ConInPrivate->TextInExListCount,\r
@@ -597,7 +610,7 @@ Returns:
                   );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  InitializeListHead (&ConInPrivate->NotifyList); \r
+  InitializeListHead (&ConInPrivate->NotifyList);\r
 \r
   //\r
   // Allocate Buffer and Create Event for Absolute Pointer and Simple Pointer Protocols\r
@@ -651,6 +664,17 @@ ConSplitterTextOutConstructor (
 {\r
   EFI_STATUS  Status;\r
 \r
+  //\r
+  // Copy protocols template\r
+  //\r
+  if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
+    CopyMem (&ConOutPrivate->UgaDraw, &gUgaDrawProtocolTemplate, sizeof (EFI_UGA_DRAW_PROTOCOL));\r
+  }\r
+\r
+  if (FeaturePcdGet (PcdConOutGopSupport)) {\r
+    CopyMem (&ConOutPrivate->GraphicsOutput, &gGraphicsOutputProtocolTemplate, sizeof (EFI_GRAPHICS_OUTPUT_PROTOCOL));\r
+  }\r
+\r
   //\r
   // Initilize console output splitter's private data.\r
   //\r
@@ -1072,7 +1096,7 @@ Returns:
   }\r
 \r
   Status = ConSplitterTextInExAddDevice (&mConIn, TextInEx);\r
-   \r
+\r
   return Status;\r
 }\r
 \r
@@ -1153,7 +1177,7 @@ Returns:
              &gEfiAbsolutePointerProtocolGuid,\r
              (VOID **) &AbsolutePointer\r
              );\r
-  \r
+\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
@@ -1417,8 +1441,8 @@ Returns:
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-  \r
-  \r
+\r
+\r
   Status = ConSplitterStop (\r
             This,\r
             ControllerHandle,\r
@@ -3175,36 +3199,36 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  RegsiteredData    - A pointer to a buffer that is filled in with the keystroke \r
+  RegsiteredData    - A pointer to a buffer that is filled in with the keystroke\r
                       state data for the key that was registered.\r
-  InputData         - A pointer to a buffer that is filled in with the keystroke \r
+  InputData         - A pointer to a buffer that is filled in with the keystroke\r
                       state data for the key that was pressed.\r
 \r
 Returns:\r
   TRUE              - Key be pressed matches a registered key.\r
-  FLASE             - Match failed. \r
-  \r
+  FLASE             - Match failed.\r
+\r
 --*/\r
 {\r
   ASSERT (RegsiteredData != NULL && InputData != NULL);\r
-  \r
+\r
   if ((RegsiteredData->Key.ScanCode    != InputData->Key.ScanCode) ||\r
       (RegsiteredData->Key.UnicodeChar != InputData->Key.UnicodeChar)) {\r
-    return FALSE;  \r
-  }      \r
-  \r
+    return FALSE;\r
+  }\r
+\r
   //\r
   // Assume KeyShiftState/KeyToggleState = 0 in Registered key data means these state could be ignored.\r
   //\r
   if (RegsiteredData->KeyState.KeyShiftState != 0 &&\r
       RegsiteredData->KeyState.KeyShiftState != InputData->KeyState.KeyShiftState) {\r
-    return FALSE;    \r
-  }   \r
+    return FALSE;\r
+  }\r
   if (RegsiteredData->KeyState.KeyToggleState != 0 &&\r
       RegsiteredData->KeyState.KeyToggleState != InputData->KeyState.KeyToggleState) {\r
-    return FALSE;    \r
-  }     \r
-  \r
+    return FALSE;\r
+  }\r
+\r
   return TRUE;\r
 \r
 }\r
@@ -3230,7 +3254,7 @@ ConSplitterTextInResetEx (
 \r
   Returns:\r
     EFI_SUCCESS           - The device was reset.\r
-    EFI_DEVICE_ERROR      - The device is not functioning properly and could \r
+    EFI_DEVICE_ERROR      - The device is not functioning properly and could\r
                             not be reset.\r
 \r
 --*/\r
@@ -3270,20 +3294,20 @@ ConSplitterTextInReadKeyStrokeEx (
 /*++\r
 \r
   Routine Description:\r
-    Reads the next keystroke from the input device. The WaitForKey Event can \r
+    Reads the next keystroke from the input device. The WaitForKey Event can\r
     be used to test for existance of a keystroke via WaitForEvent () call.\r
 \r
   Arguments:\r
     This       - Protocol instance pointer.\r
-    KeyData    - A pointer to a buffer that is filled in with the keystroke \r
+    KeyData    - A pointer to a buffer that is filled in with the keystroke\r
                  state data for the key that was pressed.\r
 \r
   Returns:\r
     EFI_SUCCESS           - The keystroke information was returned.\r
     EFI_NOT_READY         - There was no keystroke data availiable.\r
-    EFI_DEVICE_ERROR      - The keystroke information was not returned due to \r
+    EFI_DEVICE_ERROR      - The keystroke information was not returned due to\r
                             hardware errors.\r
-    EFI_INVALID_PARAMETER - KeyData is NULL.                        \r
+    EFI_INVALID_PARAMETER - KeyData is NULL.\r
 \r
 --*/\r
 {\r
@@ -3292,7 +3316,7 @@ ConSplitterTextInReadKeyStrokeEx (
   UINTN                         Index;\r
   EFI_KEY_DATA                  CurrentKeyData;\r
 \r
-  \r
+\r
   if (KeyData == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -3326,7 +3350,7 @@ ConSplitterTextInReadKeyStrokeEx (
     }\r
   }\r
 \r
-  return EFI_NOT_READY;  \r
+  return EFI_NOT_READY;\r
 }\r
 \r
 EFI_STATUS\r
@@ -3342,17 +3366,17 @@ ConSplitterTextInSetState (
 \r
   Arguments:\r
     This                  - Protocol instance pointer.\r
-    KeyToggleState        - A pointer to the EFI_KEY_TOGGLE_STATE to set the \r
+    KeyToggleState        - A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
                             state for the input device.\r
-                          \r
-  Returns:                \r
+\r
+  Returns:\r
     EFI_SUCCESS           - The device state was set successfully.\r
-    EFI_DEVICE_ERROR      - The device is not functioning correctly and could \r
+    EFI_DEVICE_ERROR      - The device is not functioning correctly and could\r
                             not have the setting adjusted.\r
     EFI_UNSUPPORTED       - The device does not have the ability to set its state.\r
-    EFI_INVALID_PARAMETER - KeyToggleState is NULL.                       \r
+    EFI_INVALID_PARAMETER - KeyToggleState is NULL.\r
 \r
---*/   \r
+--*/\r
 {\r
   TEXT_IN_SPLITTER_PRIVATE_DATA *Private;\r
   EFI_STATUS                    Status;\r
@@ -3378,7 +3402,7 @@ ConSplitterTextInSetState (
     }\r
   }\r
 \r
-  return EFI_SUCCESS;  \r
+  return EFI_SUCCESS;\r
 \r
 }\r
 \r
@@ -3397,26 +3421,26 @@ ConSplitterTextInRegisterKeyNotify (
 \r
   Arguments:\r
     This                    - Protocol instance pointer.\r
-    KeyData                 - A pointer to a buffer that is filled in with the keystroke \r
+    KeyData                 - A pointer to a buffer that is filled in with the keystroke\r
                               information data for the key that was pressed.\r
-    KeyNotificationFunction - Points to the function to be called when the key \r
-                              sequence is typed specified by KeyData.                        \r
-    NotifyHandle            - Points to the unique handle assigned to the registered notification.                          \r
+    KeyNotificationFunction - Points to the function to be called when the key\r
+                              sequence is typed specified by KeyData.\r
+    NotifyHandle            - Points to the unique handle assigned to the registered notification.\r
 \r
   Returns:\r
     EFI_SUCCESS             - The notification function was registered successfully.\r
     EFI_OUT_OF_RESOURCES    - Unable to allocate resources for necesssary data structures.\r
-    EFI_INVALID_PARAMETER   - KeyData or NotifyHandle is NULL.                       \r
-                              \r
---*/   \r
+    EFI_INVALID_PARAMETER   - KeyData or NotifyHandle is NULL.\r
+\r
+--*/\r
 {\r
   TEXT_IN_SPLITTER_PRIVATE_DATA *Private;\r
   EFI_STATUS                    Status;\r
   UINTN                         Index;\r
   TEXT_IN_EX_SPLITTER_NOTIFY    *NewNotify;\r
   LIST_ENTRY                    *Link;\r
-  TEXT_IN_EX_SPLITTER_NOTIFY    *CurrentNotify;  \r
-  \r
+  TEXT_IN_EX_SPLITTER_NOTIFY    *CurrentNotify;\r
+\r
 \r
   if (KeyData == NULL || NotifyHandle == NULL || KeyNotificationFunction == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -3425,7 +3449,7 @@ ConSplitterTextInRegisterKeyNotify (
   Private = TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
 \r
   //\r
-  // if no physical console input device exists, \r
+  // if no physical console input device exists,\r
   // return EFI_SUCCESS directly.\r
   //\r
   if (Private->CurrentNumberOfExConsoles <= 0) {\r
@@ -3437,22 +3461,22 @@ ConSplitterTextInRegisterKeyNotify (
   //\r
   for (Link = Private->NotifyList.ForwardLink; Link != &Private->NotifyList; Link = Link->ForwardLink) {\r
     CurrentNotify = CR (\r
-                      Link, \r
-                      TEXT_IN_EX_SPLITTER_NOTIFY, \r
-                      NotifyEntry, \r
+                      Link,\r
+                      TEXT_IN_EX_SPLITTER_NOTIFY,\r
+                      NotifyEntry,\r
                       TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE\r
                       );\r
-    if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) { \r
+    if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) {\r
       if (CurrentNotify->KeyNotificationFn == KeyNotificationFunction) {\r
-        *NotifyHandle = CurrentNotify->NotifyHandle;        \r
+        *NotifyHandle = CurrentNotify->NotifyHandle;\r
         return EFI_SUCCESS;\r
       }\r
     }\r
   }\r
-  \r
+\r
   //\r
   // Allocate resource to save the notification function\r
-  //  \r
+  //\r
   NewNotify = (TEXT_IN_EX_SPLITTER_NOTIFY *) AllocateZeroPool (sizeof (TEXT_IN_EX_SPLITTER_NOTIFY));\r
   if (NewNotify == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -3462,12 +3486,12 @@ ConSplitterTextInRegisterKeyNotify (
     gBS->FreePool (NewNotify);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
-  NewNotify->Signature         = TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE;     \r
+  NewNotify->Signature         = TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE;\r
   NewNotify->KeyNotificationFn = KeyNotificationFunction;\r
   CopyMem (&NewNotify->KeyData, KeyData, sizeof (KeyData));\r
-  \r
+\r
   //\r
-  // Return the wrong status of registering key notify of \r
+  // Return the wrong status of registering key notify of\r
   // physical console input device if meet problems\r
   //\r
   for (Index = 0; Index < Private->CurrentNumberOfExConsoles; Index++) {\r
@@ -3486,7 +3510,7 @@ ConSplitterTextInRegisterKeyNotify (
 \r
   //\r
   // Use gSimpleTextInExNotifyGuid to get a valid EFI_HANDLE\r
-  //  \r
+  //\r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &NewNotify->NotifyHandle,\r
                   &gSimpleTextInExNotifyGuid,\r
@@ -3496,11 +3520,11 @@ ConSplitterTextInRegisterKeyNotify (
   ASSERT_EFI_ERROR (Status);\r
 \r
   InsertTailList (&mConIn.NotifyList, &NewNotify->NotifyEntry);\r
-  \r
-  *NotifyHandle                = NewNotify->NotifyHandle;  \r
-  \r
-  return EFI_SUCCESS;  \r
-  \r
+\r
+  *NotifyHandle                = NewNotify->NotifyHandle;\r
+\r
+  return EFI_SUCCESS;\r
+\r
 }\r
 \r
 EFI_STATUS\r
@@ -3515,21 +3539,21 @@ ConSplitterTextInUnregisterKeyNotify (
     Remove a registered notification function from a particular keystroke.\r
 \r
   Arguments:\r
-    This                    - Protocol instance pointer.    \r
+    This                    - Protocol instance pointer.\r
     NotificationHandle      - The handle of the notification function being unregistered.\r
 \r
   Returns:\r
     EFI_SUCCESS             - The notification function was unregistered successfully.\r
     EFI_INVALID_PARAMETER   - The NotificationHandle is invalid.\r
-    EFI_NOT_FOUND           - Can not find the matching entry in database.  \r
-                              \r
---*/   \r
+    EFI_NOT_FOUND           - Can not find the matching entry in database.\r
+\r
+--*/\r
 {\r
   TEXT_IN_SPLITTER_PRIVATE_DATA *Private;\r
   EFI_STATUS                    Status;\r
   UINTN                         Index;\r
   TEXT_IN_EX_SPLITTER_NOTIFY    *CurrentNotify;\r
-  LIST_ENTRY                    *Link;            \r
+  LIST_ENTRY                    *Link;\r
 \r
   if (NotificationHandle == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -3550,7 +3574,7 @@ ConSplitterTextInUnregisterKeyNotify (
   Private = TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
 \r
   //\r
-  // if no physical console input device exists, \r
+  // if no physical console input device exists,\r
   // return EFI_SUCCESS directly.\r
   //\r
   if (Private->CurrentNumberOfExConsoles <= 0) {\r
@@ -3562,14 +3586,14 @@ ConSplitterTextInUnregisterKeyNotify (
     if (CurrentNotify->NotifyHandle == NotificationHandle) {\r
       for (Index = 0; Index < Private->CurrentNumberOfExConsoles; Index++) {\r
         Status = Private->TextInExList[Index]->UnregisterKeyNotify (\r
-                                                 Private->TextInExList[Index], \r
+                                                 Private->TextInExList[Index],\r
                                                  CurrentNotify->NotifyHandleList[Index]\r
                                                  );\r
         if (EFI_ERROR (Status)) {\r
           return Status;\r
-        }        \r
+        }\r
       }\r
-      RemoveEntryList (&CurrentNotify->NotifyEntry);      \r
+      RemoveEntryList (&CurrentNotify->NotifyEntry);\r
       Status = gBS->UninstallMultipleProtocolInterfaces (\r
                       CurrentNotify->NotifyHandle,\r
                       &gSimpleTextInExNotifyGuid,\r
@@ -3579,12 +3603,12 @@ ConSplitterTextInUnregisterKeyNotify (
       ASSERT_EFI_ERROR (Status);\r
       gBS->FreePool (CurrentNotify->NotifyHandleList);\r
       gBS->FreePool (CurrentNotify);\r
-      return EFI_SUCCESS;      \r
-    }    \r
+      return EFI_SUCCESS;\r
+    }\r
   }\r
 \r
-  return EFI_NOT_FOUND;    \r
-  \r
+  return EFI_NOT_FOUND;\r
+\r
 }\r
 \r
 EFI_STATUS\r
@@ -3833,9 +3857,9 @@ ConSplitterAbsolutePointerReset (
 \r
   Returns:\r
     EFI_SUCCESS           - The device was reset.\r
-    EFI_DEVICE_ERROR      - The device is not functioning correctly and could \r
+    EFI_DEVICE_ERROR      - The device is not functioning correctly and could\r
                             not be reset.\r
-                            \r
+\r
 --*/\r
 {\r
   EFI_STATUS                    Status;\r
@@ -3846,7 +3870,7 @@ ConSplitterAbsolutePointerReset (
   Private = TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS (This);\r
 \r
   Private->AbsoluteInputEventSignalState = FALSE;\r
-    \r
+\r
   if (Private->CurrentNumberOfAbsolutePointers == 0) {\r
     return EFI_SUCCESS;\r
   }\r
@@ -3867,7 +3891,7 @@ ConSplitterAbsolutePointerReset (
 }\r
 \r
 EFI_STATUS\r
-EFIAPI \r
+EFIAPI\r
 ConSplitterAbsolutePointerGetState (\r
   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
   IN OUT EFI_ABSOLUTE_POINTER_STATE  *State\r
@@ -3884,9 +3908,9 @@ ConSplitterAbsolutePointerGetState (
   Returns:\r
     EFI_SUCCESS           - The state of the pointer device was returned in State..\r
     EFI_NOT_READY         - The state of the pointer device has not changed since the last call to\r
-                            GetState().                                                           \r
+                            GetState().\r
     EFI_DEVICE_ERROR      - A device error occurred while attempting to retrieve the pointer\r
-                            device's current state.                                         \r
+                            device's current state.\r
 --*/\r
 {\r
   TEXT_IN_SPLITTER_PRIVATE_DATA *Private;\r
@@ -3910,7 +3934,7 @@ ConSplitterAbsolutePointerGetState (
   State->CurrentY                        = 0;\r
   State->CurrentZ                        = 0;\r
   State->ActiveButtons                   = 0;\r
-    \r
+\r
   //\r
   // if no physical pointer device exists, return EFI_NOT_READY;\r
   // if any physical pointer device has changed state,\r
@@ -3939,7 +3963,7 @@ ConSplitterAbsolutePointerGetState (
       if (!(Private->AbsolutePointerMode.AbsoluteMinZ == 0 && Private->AbsolutePointerMode.AbsoluteMaxZ == 0)) {\r
         State->CurrentZ = CurrentState.CurrentZ;\r
       }\r
-      \r
+\r
     } else if (Status == EFI_DEVICE_ERROR) {\r
       ReturnStatus = EFI_DEVICE_ERROR;\r
     }\r
@@ -3985,7 +4009,7 @@ Returns:
   }\r
 \r
   //\r
-  // if AbsoluteInputEventSignalState is flagged before, \r
+  // if AbsoluteInputEventSignalState is flagged before,\r
   // and not cleared by Reset() or GetState(), signal it\r
   //\r
   if (Private->AbsoluteInputEventSignalState) {\r
@@ -4486,7 +4510,7 @@ ConSplitterTextOutSetCursorPosition (
   Private   = TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
   TextOutModeMap  = NULL;\r
   ModeNumber      = Private->TextOutMode.Mode;\r
-  \r
+\r
   //\r
   // Get current MaxColumn and MaxRow from intersection map\r
   //\r
@@ -4496,7 +4520,7 @@ ConSplitterTextOutSetCursorPosition (
   } else {\r
     CurrentMode = ModeNumber;\r
   }\r
-  \r
+\r
   MaxColumn = Private->TextOutQueryData[CurrentMode].Columns;\r
   MaxRow    = Private->TextOutQueryData[CurrentMode].Rows;\r
 \r