ReactOS 0.4.15-dev-7942-gd23573b
settings.h File Reference
#include "concfg/settings.h"
Include dependency graph for settings.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define RGBFromAttrib(Console, Attribute)   ((Console)->Colors[(Attribute) & 0xF])
 
#define TextAttribFromAttrib(Attribute)   ( !((Attribute) & COMMON_LVB_REVERSE_VIDEO) ? (Attribute) & 0xF : ((Attribute) >> 4) & 0xF )
 
#define BkgdAttribFromAttrib(Attribute)   ( !((Attribute) & COMMON_LVB_REVERSE_VIDEO) ? ((Attribute) >> 4) & 0xF : (Attribute) & 0xF )
 
#define MakeAttrib(TextAttrib, BkgdAttrib)   (USHORT)((((BkgdAttrib) & 0xF) << 4) | ((TextAttrib) & 0xF))
 

Functions

VOID ConSrvApplyUserSettings (IN PCONSRV_CONSOLE Console, IN PCONSOLE_STATE_INFO ConsoleInfo)
 

Macro Definition Documentation

◆ BkgdAttribFromAttrib

#define BkgdAttribFromAttrib (   Attribute)    ( !((Attribute) & COMMON_LVB_REVERSE_VIDEO) ? ((Attribute) >> 4) & 0xF : (Attribute) & 0xF )

Definition at line 24 of file settings.h.

◆ MakeAttrib

#define MakeAttrib (   TextAttrib,
  BkgdAttrib 
)    (USHORT)((((BkgdAttrib) & 0xF) << 4) | ((TextAttrib) & 0xF))

Definition at line 25 of file settings.h.

◆ RGBFromAttrib

#define RGBFromAttrib (   Console,
  Attribute 
)    ((Console)->Colors[(Attribute) & 0xF])

Definition at line 22 of file settings.h.

◆ TextAttribFromAttrib

#define TextAttribFromAttrib (   Attribute)    ( !((Attribute) & COMMON_LVB_REVERSE_VIDEO) ? (Attribute) & 0xF : ((Attribute) >> 4) & 0xF )

Definition at line 23 of file settings.h.

Function Documentation

◆ ConSrvApplyUserSettings()

VOID ConSrvApplyUserSettings ( IN PCONSRV_CONSOLE  Console,
IN PCONSOLE_STATE_INFO  ConsoleInfo 
)

Console->InputBufferSize = 0;

Definition at line 36 of file settings.c.

39{
40 PCONSOLE_SCREEN_BUFFER ActiveBuffer = Console->ActiveBuffer;
41
42 /*
43 * Apply terminal-edition settings:
44 * - QuickEdit and Insert modes,
45 * - History settings.
46 */
47 Console->QuickEdit = !!ConsoleInfo->QuickEdit;
48 Console->InsertMode = !!ConsoleInfo->InsertMode;
51 ConsoleInfo->HistoryBufferSize,
52 ConsoleInfo->NumberOfHistoryBuffers,
53 ConsoleInfo->HistoryNoDup);
54
55 /* Copy the new console palette */
56 // FIXME: Possible buffer overflow if s_colors is bigger than ConsoleInfo->ColorTable.
57 RtlCopyMemory(Console->Colors, ConsoleInfo->ColorTable, sizeof(s_Colors));
58
59 /* Apply cursor size */
60 ActiveBuffer->CursorInfo.bVisible = (ConsoleInfo->CursorSize != 0);
61 ActiveBuffer->CursorInfo.dwSize = min(max(ConsoleInfo->CursorSize, 0), 100);
62
63 /* Update the code page */
64 if ((Console->OutputCodePage != ConsoleInfo->CodePage) &&
66 {
67 // ConDrvSetConsoleCP(Console, ConsoleInfo->CodePage, TRUE); // Output
68 // ConDrvSetConsoleCP(Console, ConsoleInfo->CodePage, FALSE); // Input
69 if (TermSetCodePage(Console, ConsoleInfo->CodePage))
70 {
72 Console->InputCodePage = ConsoleInfo->CodePage;
73 }
74 }
75
76 // FIXME: Check ConsoleInfo->WindowSize with respect to
77 // TermGetLargestConsoleWindowSize(...).
78
79 if (GetType(ActiveBuffer) == TEXTMODE_BUFFER)
80 {
81 /* Resize its active screen-buffer */
83 COORD BufSize = ConsoleInfo->ScreenBufferSize;
84
85 if (Console->FixedSize)
86 {
87 /*
88 * The console is in fixed-size mode, so we cannot resize anything
89 * at the moment. However, keep those settings somewhere so that
90 * we can try to set them up when we will be allowed to do so.
91 */
92 if (ConsoleInfo->WindowSize.X != ActiveBuffer->OldViewSize.X ||
93 ConsoleInfo->WindowSize.Y != ActiveBuffer->OldViewSize.Y)
94 {
95 ActiveBuffer->OldViewSize = ConsoleInfo->WindowSize;
96 }
97
98 /* The buffer size is not allowed to be smaller than the view size */
99 if (BufSize.X >= ActiveBuffer->OldViewSize.X && BufSize.Y >= ActiveBuffer->OldViewSize.Y)
100 {
101 if (BufSize.X != ActiveBuffer->OldScreenBufferSize.X ||
102 BufSize.Y != ActiveBuffer->OldScreenBufferSize.Y)
103 {
104 /*
105 * The console is in fixed-size mode, so we cannot resize anything
106 * at the moment. However, keep those settings somewhere so that
107 * we can try to set them up when we will be allowed to do so.
108 */
109 ActiveBuffer->OldScreenBufferSize = BufSize;
110 }
111 }
112 }
113 else
114 {
115 BOOL SizeChanged = FALSE;
116
117 /* Resize the console */
118 if (ConsoleInfo->WindowSize.X != ActiveBuffer->ViewSize.X ||
119 ConsoleInfo->WindowSize.Y != ActiveBuffer->ViewSize.Y)
120 {
121 ActiveBuffer->ViewSize = ConsoleInfo->WindowSize;
122 SizeChanged = TRUE;
123 }
124
125 /* Resize the screen-buffer */
126 if (BufSize.X != ActiveBuffer->ScreenBufferSize.X ||
127 BufSize.Y != ActiveBuffer->ScreenBufferSize.Y)
128 {
130 SizeChanged = TRUE;
131 }
132
133 if (SizeChanged) TermResizeTerminal(Console);
134 }
135
136 /* Apply foreground and background colors for both screen and popup */
138 Buffer,
139 ConsoleInfo->ScreenAttributes,
140 ConsoleInfo->PopupAttributes);
141 }
142 else // if (GetType(ActiveBuffer) == GRAPHICS_BUFFER)
143 {
144 /*
145 * In any case we do NOT modify the size of the graphics screen-buffer.
146 * We just allow resizing the view only if the new size is smaller
147 * than the older one.
148 */
149 if (Console->FixedSize)
150 {
151 /*
152 * The console is in fixed-size mode, so we cannot resize anything
153 * at the moment. However, keep those settings somewhere so that
154 * we can try to set them up when we will be allowed to do so.
155 */
156 if (ConsoleInfo->WindowSize.X <= ActiveBuffer->ViewSize.X ||
157 ConsoleInfo->WindowSize.Y <= ActiveBuffer->ViewSize.Y)
158 {
159 ActiveBuffer->OldViewSize = ConsoleInfo->WindowSize;
160 }
161 }
162 else
163 {
164 /* Resize the view if its size is bigger than the specified size */
165 if (ConsoleInfo->WindowSize.X <= ActiveBuffer->ViewSize.X ||
166 ConsoleInfo->WindowSize.Y <= ActiveBuffer->ViewSize.Y)
167 {
168 ActiveBuffer->ViewSize = ConsoleInfo->WindowSize;
169 // SizeChanged = TRUE;
170 }
171 }
172 }
173}
#define BufSize
Definition: FsRtlTunnel.c:28
CConsole Console
Definition: bufpool.h:45
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
BOOL WINAPI IsValidCodePage(UINT CodePage)
Definition: nls.c:1604
unsigned int BOOL
Definition: ntddk_ex.h:94
#define min(a, b)
Definition: monoChain.cc:55
#define TEXTMODE_BUFFER
Definition: pccons.c:21
CONSOLE_CURSOR_INFO CursorInfo
Definition: conio.h:75
COORD OldScreenBufferSize
Definition: conio.h:65
COORD ScreenBufferSize
Definition: conio.h:62
Definition: bl.h:1338
ULONG Y
Definition: bl.h:1340
ULONG X
Definition: bl.h:1339
static CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo
Definition: video.c:47
#define max(a, b)
Definition: svc.c:63
#define TermResizeTerminal(Console)
Definition: term.h:28
#define TermSetCodePage(Console, CodePage)
Definition: term.h:38
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
static const COLORREF s_Colors[16]
Definition: settings.c:37
NTSTATUS ConioResizeBuffer(PCONSOLE Console, PTEXTMODE_SCREEN_BUFFER ScreenBuffer, COORD Size)
Definition: text.c:359
VOID HistoryReshapeAllBuffers(IN PCONSRV_CONSOLE Console, IN ULONG HistoryBufferSize, IN ULONG MaxNumberOfHistoryBuffers, IN BOOLEAN HistoryNoDup)
Definition: history.c:371
struct _TEXTMODE_SCREEN_BUFFER * PTEXTMODE_SCREEN_BUFFER
#define CON_SET_OUTPUT_CP(Console, CodePage)
Definition: conio.h:323
#define GetType(This)
Definition: conio.h:54
NTSTATUS NTAPI ConDrvChangeScreenBufferAttributes(IN PCONSOLE Console, IN PTEXTMODE_SCREEN_BUFFER Buffer, IN USHORT NewScreenAttrib, IN USHORT NewPopupAttrib)
Definition: text.c:497

Referenced by GuiApplyUserSettings().