Merge branch 'main' into eolite-5.27
This commit is contained in:
@@ -4,33 +4,26 @@
|
|||||||
name: 'Build system'
|
name: 'Build system'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- '**'
|
- 'main'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
codestyle:
|
codestyle:
|
||||||
name: "Check kernel codestyle"
|
name: "Check kernel codestyle"
|
||||||
runs-on: ubuntu-latest
|
runs-on: kolibri-toolchain
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt update && sudo apt install perl -y
|
|
||||||
|
|
||||||
- name: Check codestyle
|
- name: Check codestyle
|
||||||
run: |
|
run: |
|
||||||
find kernel/trunk -iname '*.asm' -or -iname '*.inc' -exec bash -c "echo {}; cat {} | perl .gitea/workflows/checker.pl" \;
|
find kernel/trunk -iname '*.asm' -or -iname '*.inc' -exec bash -c "echo {}; cat {} | perl .gitea/workflows/checker.pl" \;
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: 'Build'
|
name: 'Build'
|
||||||
runs-on: ubuntu-latest
|
runs-on: kolibri-toolchain
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -38,29 +31,28 @@ jobs:
|
|||||||
|
|
||||||
- name: Get describe
|
- name: Get describe
|
||||||
id: vars
|
id: vars
|
||||||
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
- name: Setup dependencies
|
- name: Get toolchain hash
|
||||||
|
id: toolchain-hash
|
||||||
run: |
|
run: |
|
||||||
cd /tmp
|
a=$(find ${{ gitea.workspace }}/programs/develop/cmm/ -type f -print0 | sort -z | xargs -0 sha1sum)
|
||||||
sudo apt update
|
b=$(sha1sum ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc)
|
||||||
sudo apt install p7zip-full fasm nasm make gcc gcc-multilib g++ g++-multilib mtools mkisofs parted gdisk -y
|
c=$(find ${{ gitea.workspace }}/programs/develop/objconv/ -type f -print0 | sort -z | xargs -0 sha1sum)
|
||||||
wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tup/tup_0.8-1_amd64.deb
|
d=$(find ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/ -type f -print0 | sort -z | xargs -0 sha1sum)
|
||||||
sudo apt install ./tup_0.8-1_amd64.deb -y
|
e=$(find ${{ gitea.workspace }}/programs/other/kpack/linux/ -type f -print0 | sort -z | xargs -0 sha1sum)
|
||||||
|
f=$(find ${{ gitea.workspace }}/programs/develop/clink/ -type f -print0 | sort -z | xargs -0 sha1sum)
|
||||||
|
echo hash=$(echo $a $b $c $d $e $f | sha1sum | awk '{print $1}') >> $GITEA_OUTPUT
|
||||||
|
|
||||||
- name: Install GCC toolchain
|
- name: Restore toolchain
|
||||||
run: |
|
id: cache-toolchain
|
||||||
chmod +x ${{ gitea.workspace }}/.gitea/workflows/install_kgcc
|
uses: actions/cache/restore@v4
|
||||||
${{ gitea.workspace }}/.gitea/workflows/install_kgcc
|
with:
|
||||||
|
path: /home/autobuild
|
||||||
- name: Install JWasm
|
key: kolibri-toolchain-${{ steps.toolchain-hash.outputs.hash }}
|
||||||
run: |
|
|
||||||
cd /tmp
|
|
||||||
wget -O JWasm211bl.zip https://sourceforge.net/projects/jwasm/files/JWasm%20Linux%20binary/JWasm211bl.zip/download
|
|
||||||
unzip JWasm211bl.zip "jwasm" -d /home/autobuild/tools/win32/bin/
|
|
||||||
chmod +x /home/autobuild/tools/win32/bin/jwasm
|
|
||||||
|
|
||||||
- name: Build and install C--
|
- name: Build and install C--
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/develop/cmm/
|
cd ${{ gitea.workspace }}/programs/develop/cmm/
|
||||||
make -f Makefile.lin32
|
make -f Makefile.lin32
|
||||||
@@ -70,105 +62,152 @@ jobs:
|
|||||||
make -f Makefile.lin32 clean
|
make -f Makefile.lin32 clean
|
||||||
|
|
||||||
- name: Install TCC
|
- name: Install TCC
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cp ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc /home/autobuild/tools/win32/bin/kos32-tcc
|
cp ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc /home/autobuild/tools/win32/bin/kos32-tcc
|
||||||
chmod +x /home/autobuild/tools/win32/bin/kos32-tcc
|
chmod +x /home/autobuild/tools/win32/bin/kos32-tcc
|
||||||
|
|
||||||
- name: Compile objconv
|
- name: Build and install objconv
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/develop/objconv/
|
cd ${{ gitea.workspace }}/programs/develop/objconv/
|
||||||
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
|
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
|
||||||
chmod +x /home/autobuild/tools/win32/bin/objconv
|
chmod +x /home/autobuild/tools/win32/bin/objconv
|
||||||
|
|
||||||
- name: Compile kerpack
|
- name: Build and install kerpack
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
|
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
|
||||||
make
|
make
|
||||||
chmod +x kerpack
|
chmod +x kerpack
|
||||||
mv kerpack /home/autobuild/tools/win32/bin/.
|
mv kerpack /home/autobuild/tools/win32/bin/.
|
||||||
|
|
||||||
- name: Compile kpack
|
- name: Build and install kpack
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/other/kpack/linux/
|
cd ${{ gitea.workspace }}/programs/other/kpack/linux/
|
||||||
bash build.sh
|
bash build.sh
|
||||||
chmod +x kpack
|
chmod +x kpack
|
||||||
mv kpack /home/autobuild/tools/win32/bin/.
|
mv kpack /home/autobuild/tools/win32/bin/.
|
||||||
|
|
||||||
- name: Compile clink
|
- name: Build and install clink
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd ${{ github.workspace }}/programs/develop/clink
|
cd ${{ gitea.workspace }}/programs/develop/clink
|
||||||
gcc main.c -o clink
|
gcc main.c -o clink
|
||||||
chmod a+x clink
|
chmod a+x clink
|
||||||
mv clink /home/autobuild/tools/win32/bin/clink
|
mv clink /home/autobuild/tools/win32/bin/clink
|
||||||
|
|
||||||
|
- name: Prepare cache folder
|
||||||
|
run: |
|
||||||
|
rm /home/autobuild
|
||||||
|
mv /root/autobuild /home/autobuild
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
|
- name: Save toolchain
|
||||||
|
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
path: /home/autobuild
|
||||||
|
key: kolibri-toolchain-${{ steps.toolchain-hash.outputs.hash }}
|
||||||
|
|
||||||
- name: Configure tup
|
- name: Configure tup
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}
|
cd ${{ gitea.workspace }}
|
||||||
export ROOT=${{ gitea.workspace }}
|
|
||||||
cd $ROOT
|
|
||||||
|
|
||||||
echo "CONFIG_KPACK_CMD=&& kpack --nologo %o" > tup.config
|
export ROOT=${{ gitea.workspace }}
|
||||||
echo "CONFIG_KERPACK_CMD=&& kerpack %o" >> tup.config
|
echo "CONFIG_KPACK_CMD= && kpack --nologo %o" | tee en_US.config ru_RU.config es_ES.config
|
||||||
echo "CONFIG_PESTRIP_CMD=&& EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" >> tup.config
|
echo "CONFIG_KERPACK_CMD= && kerpack %o" | tee -a en_US.config ru_RU.config es_ES.config
|
||||||
echo "CONFIG_NO_MSVC=full" >> tup.config
|
echo "CONFIG_PESTRIP_CMD= && EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" | tee -a en_US.config ru_RU.config es_ES.config
|
||||||
echo "CONFIG_INSERT_REVISION_ID=1" >> tup.config
|
echo "CONFIG_NO_MSVC=full" | tee -a en_US.config ru_RU.config es_ES.config
|
||||||
|
echo "CONFIG_INSERT_REVISION_ID=1" | tee -a en_US.config ru_RU.config es_ES.config
|
||||||
|
|
||||||
tup -v
|
tup -v
|
||||||
tup init
|
tup init
|
||||||
|
|
||||||
- name: Build KolibriOS (en_US)
|
# Configure en_US
|
||||||
|
echo "CONFIG_LANG=en_US" >> en_US.config
|
||||||
|
echo "CONFIG_BUILD_TYPE=en_US" >> en_US.config
|
||||||
|
tup variant en_US.config
|
||||||
|
|
||||||
|
# Configure ru_RU
|
||||||
|
echo "CONFIG_LANG=ru_RU" >> ru_RU.config
|
||||||
|
echo "CONFIG_BUILD_TYPE=ru_RU" >> ru_RU.config
|
||||||
|
tup variant ru_RU.config
|
||||||
|
|
||||||
|
# Configure es_ES
|
||||||
|
echo "CONFIG_LANG=es_ES" >> es_ES.config
|
||||||
|
echo "CONFIG_BUILD_TYPE=es_ES" >> es_ES.config
|
||||||
|
tup variant es_ES.config
|
||||||
|
|
||||||
|
# -------------------------- Build en_US ------------------------- #
|
||||||
|
- name: (en_US) Build KolibriOS
|
||||||
run: |
|
run: |
|
||||||
cp tup.config tup.config.en_US
|
|
||||||
echo "CONFIG_LANG=en_US" >> tup.config.en_US
|
|
||||||
echo "CONFIG_BUILD_TYPE=en_US" >> tup.config.en_US
|
|
||||||
|
|
||||||
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
||||||
tup generate --config tup.config.en_US build-en_US.sh
|
tup build-en_US
|
||||||
./build-en_US.sh
|
|
||||||
|
|
||||||
- name: Upload floppy image (en_US)
|
- name: (en_US) Upload floppy image
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.img
|
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.img
|
||||||
path: data/kolibri.img
|
path: build-en_US/data/kolibri.img
|
||||||
|
|
||||||
- name: Upload CD image (en_US)
|
- name: (en_US) Upload CD image
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.iso
|
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.iso
|
||||||
path: data/kolibri.iso
|
path: build-en_US/data/kolibri.iso
|
||||||
|
|
||||||
- name: Upload raw image (en_US)
|
- name: (en_US) Upload raw image
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.raw
|
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.raw
|
||||||
path: data/kolibri.raw
|
path: build-en_US/data/kolibri.raw
|
||||||
|
|
||||||
- name: Build KolibriOS (ru_RU)
|
# -------------------------- Build ru_RU ------------------------- #
|
||||||
|
- name: (ru_RU) Build KolibriOS
|
||||||
run: |
|
run: |
|
||||||
git clean -d -x -f -e tup.config
|
|
||||||
cp tup.config tup.config.ru_RU
|
|
||||||
echo "CONFIG_LANG=ru_RU" >> tup.config.ru_RU
|
|
||||||
echo "CONFIG_BUILD_TYPE=ru_RU" >> tup.config.ru_RU
|
|
||||||
|
|
||||||
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
||||||
tup generate --config tup.config.ru_RU build-ru_RU.sh
|
tup build-ru_RU
|
||||||
./build-ru_RU.sh
|
|
||||||
|
|
||||||
- name: Upload floppy image (ru_RU)
|
- name: (ru_RU) Upload floppy image
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.img
|
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.img
|
||||||
path: data/kolibri.img
|
path: build-ru_RU/data/kolibri.img
|
||||||
|
|
||||||
- name: Upload CD image (ru_RU)
|
- name: (ru_RU) Upload CD image
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.iso
|
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.iso
|
||||||
path: data/kolibri.iso
|
path: build-ru_RU/data/kolibri.iso
|
||||||
|
|
||||||
- name: Upload raw image (ru_RU)
|
- name: (ru_RU) Upload raw image
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.raw
|
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.raw
|
||||||
path: data/kolibri.raw
|
path: build-ru_RU/data/kolibri.raw
|
||||||
|
|
||||||
|
# -------------------------- Build es_ES ------------------------- #
|
||||||
|
- name: (es_ES) Build KolibriOS
|
||||||
|
run: |
|
||||||
|
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
||||||
|
tup build-es_ES
|
||||||
|
|
||||||
|
- name: (es_ES) Upload floppy image
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.img
|
||||||
|
path: build-es_ES/data/kolibri.img
|
||||||
|
|
||||||
|
- name: (es_ES) Upload CD image
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.iso
|
||||||
|
path: build-es_ES/data/kolibri.iso
|
||||||
|
|
||||||
|
- name: (es_ES) Upload raw image
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.raw
|
||||||
|
path: build-es_ES/data/kolibri.raw
|
||||||
|
@@ -101,16 +101,16 @@ void TWebBrowser::SetPageDefaults()
|
|||||||
img_url.drop();
|
img_url.drop();
|
||||||
text_colors.drop();
|
text_colors.drop();
|
||||||
text_colors.add(0);
|
text_colors.add(0);
|
||||||
if (!secondrun) {
|
if (secondrun) {
|
||||||
bg_colors.drop();
|
canvas.Init(list.x, list.y, list.w, math.max(list.visible, list.count));
|
||||||
bg_colors.add(DEFAULT_BG_COL);
|
|
||||||
} else {
|
|
||||||
canvas.Fill(0, bg_colors.get(0));
|
canvas.Fill(0, bg_colors.get(0));
|
||||||
}
|
}
|
||||||
|
bg_colors.drop();
|
||||||
|
bg_colors.add(DEFAULT_BG_COL);
|
||||||
header = NULL;
|
header = NULL;
|
||||||
draw_y = BODY_MARGIN;
|
draw_y = BODY_MARGIN;
|
||||||
draw_x = left_gap = BODY_MARGIN;
|
draw_x = left_gap = BODY_MARGIN;
|
||||||
draw_w = list.w - BODY_MARGIN;
|
draw_w = list.w - BODY_MARGIN - BODY_MARGIN;
|
||||||
linebuf = 0;
|
linebuf = 0;
|
||||||
redirect = '\0';
|
redirect = '\0';
|
||||||
list.SetFont(8, 14, 10011000b);
|
list.SetFont(8, 14, 10011000b);
|
||||||
@@ -136,8 +136,6 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
dword bufpos;
|
dword bufpos;
|
||||||
bufsize = _bufsize;
|
bufsize = _bufsize;
|
||||||
|
|
||||||
if (list.w!=canvas.bufw) canvas.Init(list.x, list.y, list.w, 400*20);
|
|
||||||
|
|
||||||
if (bufpointer == _bufpointer) {
|
if (bufpointer == _bufpointer) {
|
||||||
custom_encoding = cur_encoding;
|
custom_encoding = cur_encoding;
|
||||||
} else {
|
} else {
|
||||||
@@ -156,7 +154,6 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
table.cols.drop();
|
table.cols.drop();
|
||||||
secondrun = false;
|
secondrun = false;
|
||||||
|
|
||||||
@@ -219,19 +216,15 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
AddCharToTheLine(ESBYTE[bufpos]);
|
AddCharToTheLine(ESBYTE[bufpos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RenderTextbuf();
|
||||||
|
list.count = draw_y + style.cur_line_h;
|
||||||
|
list.CheckDoesValuesOkey();
|
||||||
|
anchors.current = NULL;
|
||||||
|
|
||||||
if (!secondrun) {
|
if (!secondrun) {
|
||||||
secondrun = true;
|
secondrun = true;
|
||||||
goto _PARSE_START_;
|
goto _PARSE_START_;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderTextbuf();
|
|
||||||
list.count = draw_y + style.cur_line_h;
|
|
||||||
|
|
||||||
canvas.bufh = math.max(list.visible, list.count);
|
|
||||||
buf_data = realloc(buf_data, canvas.bufh * canvas.bufw * 4 + 8);
|
|
||||||
|
|
||||||
list.CheckDoesValuesOkey();
|
|
||||||
anchors.current = NULL;
|
|
||||||
if (!header) {
|
if (!header) {
|
||||||
strncpy(#header, #version, sizeof(TWebBrowser.header)-1);
|
strncpy(#header, #version, sizeof(TWebBrowser.header)-1);
|
||||||
DrawTitle(#header);
|
DrawTitle(#header);
|
||||||
|
@@ -22,9 +22,8 @@ void TWebBrowser::RenderLine(dword _line)
|
|||||||
zoom = list.font_w / BASIC_CHAR_W;
|
zoom = list.font_w / BASIC_CHAR_W;
|
||||||
|
|
||||||
//there is some shit happens!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
//there is some shit happens!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
if (pw > draw_w) {
|
if (pw > draw_w + BODY_MARGIN) {
|
||||||
//draw_w = pw;
|
//debugln("shit");
|
||||||
NewLine();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug_mode) {
|
if (debug_mode) {
|
||||||
@@ -83,12 +82,13 @@ void TWebBrowser::RenderTextbuf()
|
|||||||
|
|
||||||
//debugln(" \\n");
|
//debugln(" \\n");
|
||||||
|
|
||||||
//Is a new line fits in the current line?
|
//Is a new line fits in the maximum line width?
|
||||||
if (br * list.font_w + draw_x - left_gap >= draw_w) {
|
if (br * list.font_w + draw_x - left_gap >= draw_w) {
|
||||||
br = draw_w - draw_x + left_gap /list.font_w;
|
br = draw_w - draw_x + left_gap /list.font_w;
|
||||||
|
if (br < 0) br = 0;
|
||||||
while(br) {
|
while(br) {
|
||||||
if (ESBYTE[lbp + br]==' ') {
|
if (ESBYTE[lbp + br]==' ') {
|
||||||
br++;
|
if (br < len) br++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
br--;
|
br--;
|
||||||
@@ -96,7 +96,16 @@ void TWebBrowser::RenderTextbuf()
|
|||||||
}
|
}
|
||||||
//Maybe a new line is too big for the whole new line? Then we have to split it
|
//Maybe a new line is too big for the whole new line? Then we have to split it
|
||||||
if (!br) && (len * list.font_w >= draw_w) {
|
if (!br) && (len * list.font_w >= draw_w) {
|
||||||
|
//debugln("bigbr");
|
||||||
|
//debugval("draw_x", draw_x);
|
||||||
|
//debugval("draw_w", draw_w);
|
||||||
br = draw_w - draw_x / list.font_w;
|
br = draw_w - draw_x / list.font_w;
|
||||||
|
//debugval("cut into 1", br * list.font_w);
|
||||||
|
if (br < 0) {
|
||||||
|
NewLine();
|
||||||
|
br = draw_w - draw_x / list.font_w;
|
||||||
|
//debugval("cut into 2", br * list.font_w);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (br) {
|
if (br) {
|
||||||
@@ -122,7 +131,11 @@ void TWebBrowser::NewLine()
|
|||||||
if (t_html) && (!t_body) return;
|
if (t_html) && (!t_body) return;
|
||||||
|
|
||||||
if (draw_x == style.tag_list.level * 5 * list.font_w + left_gap) {
|
if (draw_x == style.tag_list.level * 5 * list.font_w + left_gap) {
|
||||||
if (!empty_line) empty_line=true; else return;
|
if (!empty_line) {
|
||||||
|
empty_line=true;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
empty_line = false;
|
empty_line = false;
|
||||||
}
|
}
|
||||||
|
@@ -61,7 +61,7 @@ void TWebBrowser::SetStyle()
|
|||||||
void TWebBrowser::tag_p()
|
void TWebBrowser::tag_p()
|
||||||
{
|
{
|
||||||
IF (tag.prior[0] == 'h') || (streq(#tag.prior,"td")) return;
|
IF (tag.prior[0] == 'h') || (streq(#tag.prior,"td")) return;
|
||||||
if (!tag.opened) && (streq(#tag.prior,"p")) return;
|
IF (!tag.opened) && (streq(#tag.prior,"p")) return;
|
||||||
NewLine();
|
NewLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,6 +119,7 @@ void TWebBrowser::tag_iframe()
|
|||||||
|
|
||||||
void TWebBrowser::tag_a()
|
void TWebBrowser::tag_a()
|
||||||
{
|
{
|
||||||
|
if (!secondrun) return;
|
||||||
if (tag.opened)
|
if (tag.opened)
|
||||||
{
|
{
|
||||||
if (tag.get_value_of("href")) && (!strstr(tag.value,"javascript:"))
|
if (tag.get_value_of("href")) && (!strstr(tag.value,"javascript:"))
|
||||||
@@ -133,6 +134,7 @@ void TWebBrowser::tag_a()
|
|||||||
|
|
||||||
void TWebBrowser::tag_meta_xml()
|
void TWebBrowser::tag_meta_xml()
|
||||||
{
|
{
|
||||||
|
if (secondrun) return;
|
||||||
if (custom_encoding == -1) if (tag.get_value_of("charset"))
|
if (custom_encoding == -1) if (tag.get_value_of("charset"))
|
||||||
|| (tag.get_value_of("content")) || (tag.get_value_of("encoding"))
|
|| (tag.get_value_of("content")) || (tag.get_value_of("encoding"))
|
||||||
{
|
{
|
||||||
@@ -187,7 +189,7 @@ void TWebBrowser::tag_ol_ul_dt()
|
|||||||
|
|
||||||
void TWebBrowser::tag_li()
|
void TWebBrowser::tag_li()
|
||||||
{
|
{
|
||||||
if (style.nav) return;
|
//if (style.nav) return;
|
||||||
if (tag.opened) {
|
if (tag.opened) {
|
||||||
if (!style.tag_list.level) style.tag_list.upd_level(1, 'u');
|
if (!style.tag_list.level) style.tag_list.upd_level(1, 'u');
|
||||||
if (!style.pre) NewLine();
|
if (!style.pre) NewLine();
|
||||||
@@ -219,10 +221,7 @@ void TWebBrowser::tag_body()
|
|||||||
if (tag.get_value_of("link")) link_color_default = GetColor(tag.value);
|
if (tag.get_value_of("link")) link_color_default = GetColor(tag.value);
|
||||||
if (tag.get_value_of("alink")) link_color_active = GetColor(tag.value);
|
if (tag.get_value_of("alink")) link_color_active = GetColor(tag.value);
|
||||||
if (tag.get_value_of("text")) text_colors.set(0, GetColor(tag.value));
|
if (tag.get_value_of("text")) text_colors.set(0, GetColor(tag.value));
|
||||||
if (tag.get_value_of("bgcolor")) {
|
if (tag.get_value_of("bgcolor")) bg_colors.set(0, GetColor(tag.value));
|
||||||
bg_colors.set(0, GetColor(tag.value));
|
|
||||||
canvas.Fill(0, bg_colors.get(0));
|
|
||||||
}
|
|
||||||
// Autodetecting encoding if no encoding was set
|
// Autodetecting encoding if no encoding was set
|
||||||
if (tag.opened) && (custom_encoding==-1) && (cur_encoding == CH_CP866) {
|
if (tag.opened) && (custom_encoding==-1) && (cur_encoding == CH_CP866) {
|
||||||
if (strstr(bufpointer, "\208\190")) ChangeEncoding(CH_UTF8);
|
if (strstr(bufpointer, "\208\190")) ChangeEncoding(CH_UTF8);
|
||||||
@@ -250,10 +249,10 @@ void TWebBrowser::tag_h1234_caption()
|
|||||||
NewLine();
|
NewLine();
|
||||||
}
|
}
|
||||||
if (tag.is("h1")) {
|
if (tag.is("h1")) {
|
||||||
list.SetFont(BASIC_CHAR_W*2, 14+12, 10011001b);
|
list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
|
||||||
style.b = true;
|
style.b = true;
|
||||||
} else if (tag.is("h2")) {
|
} else if (tag.is("h2")) {
|
||||||
list.SetFont(BASIC_CHAR_W*2, 14+12, 10011001b);
|
list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
|
||||||
} else {
|
} else {
|
||||||
list.SetFont(6*2, 9+7, 10001001b);
|
list.SetFont(6*2, 9+7, 10001001b);
|
||||||
}
|
}
|
||||||
@@ -294,7 +293,7 @@ void TWebBrowser::tag_img()
|
|||||||
if (!strcmp(tag.value + strrchr(tag.value, '.'), "webp")) goto NOIMG;
|
if (!strcmp(tag.value + strrchr(tag.value, '.'), "webp")) goto NOIMG;
|
||||||
|
|
||||||
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
|
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
|
||||||
replace_char(#img_path, ' ', '\0', sizeof(img_path));
|
replace_char(#img_path, ' ', '\0', sizeof(img_path)-1);
|
||||||
get_absolute_url(#img_path, history.current());
|
get_absolute_url(#img_path, history.current());
|
||||||
|
|
||||||
if (check_is_the_adress_local(#img_path)) {
|
if (check_is_the_adress_local(#img_path)) {
|
||||||
@@ -331,31 +330,28 @@ NOIMG:
|
|||||||
text_colors.pop();
|
text_colors.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct TABLE {
|
struct TABLE {
|
||||||
int count;
|
|
||||||
int depth;
|
int depth;
|
||||||
int margin;
|
int margin;
|
||||||
collection_int cols;
|
collection_int cols;
|
||||||
collection_int width;
|
|
||||||
} table;
|
} table;
|
||||||
|
|
||||||
|
unsigned table_id;
|
||||||
int tr_pos, td_pos;
|
unsigned colcount;
|
||||||
int row_start_y;
|
unsigned tr_pos;
|
||||||
int colcount;
|
unsigned td_pos;
|
||||||
dword tallest_cell_in_row;
|
unsigned row_start_y;
|
||||||
|
unsigned tallest_cell_in_row;
|
||||||
|
unsigned cur_cell_w;
|
||||||
|
|
||||||
void TWebBrowser::tag_table_reset()
|
void TWebBrowser::tag_table_reset()
|
||||||
{
|
{
|
||||||
table.depth = 0;
|
table_id = 0;
|
||||||
table.count = 0;
|
|
||||||
colcount = 0;
|
colcount = 0;
|
||||||
tr_pos = 0;
|
tr_pos = 0;
|
||||||
td_pos = 0;
|
td_pos = 0;
|
||||||
|
table.depth = 0;
|
||||||
|
cur_cell_w = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TWebBrowser::tag_table()
|
void TWebBrowser::tag_table()
|
||||||
@@ -369,15 +365,15 @@ void TWebBrowser::tag_table()
|
|||||||
if(tag.opened) {
|
if(tag.opened) {
|
||||||
table.depth++;
|
table.depth++;
|
||||||
if (table.depth==1) {
|
if (table.depth==1) {
|
||||||
table.count++;
|
table_id++;
|
||||||
colcount = 0;
|
colcount = 0;
|
||||||
td_pos = 0;
|
td_pos = 0;
|
||||||
row_start_y = draw_y;
|
row_start_y = draw_y;
|
||||||
if (tag.get_number_of("width")) {
|
if (tag.get_number_of("width")) {
|
||||||
if (strchr(tag.value, '%')) tag.number = list.w * tag.number / 100;
|
if (strchr(tag.value, '%')) tag.number = list.w * tag.number / 100;
|
||||||
table.width.set(table.count, math.min(tag.number,list.w));
|
cur_cell_w = math.min(tag.number,list.w);
|
||||||
} else {
|
} else {
|
||||||
table.width.set(table.count, list.w);
|
cur_cell_w = list.w;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -436,26 +432,17 @@ void TWebBrowser::tag_table()
|
|||||||
|
|
||||||
if (!tr_pos) goto _TR_FIX;
|
if (!tr_pos) goto _TR_FIX;
|
||||||
|
|
||||||
/*
|
|
||||||
if (tag.opened) {
|
|
||||||
if (tag.get_value_of("bgcolor")) {
|
|
||||||
bg_colors.add(GetColor(tag.value));
|
|
||||||
} else {
|
|
||||||
bg_colors.add(bg_colors.get(0));
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
|
|
||||||
tallest_cell_in_row = math.max(draw_y+style.cur_line_h-list.item_h+1, tallest_cell_in_row);
|
tallest_cell_in_row = math.max(draw_y+style.cur_line_h-list.item_h+1, tallest_cell_in_row);
|
||||||
style.cur_line_h = list.item_h;
|
style.cur_line_h = list.item_h;
|
||||||
if (tag.opened) {
|
if (tag.opened)
|
||||||
|
{
|
||||||
if (!td_pos) {
|
if (!td_pos) {
|
||||||
table.margin = list.w - table.width.get(table.count) / 2 + BODY_MARGIN;
|
table.margin = list.w - cur_cell_w / 2 + BODY_MARGIN;
|
||||||
draw_x = left_gap = table.margin;
|
draw_x = left_gap = table.margin;
|
||||||
draw_w = table.width.get(table.count) - BODY_MARGIN;
|
draw_w = cur_cell_w - BODY_MARGIN;
|
||||||
} else {
|
} else {
|
||||||
draw_x = left_gap = left_gap + draw_w;
|
draw_x = left_gap = left_gap + draw_w;
|
||||||
draw_w = table.width.get(table.count) - left_gap + table.margin - BODY_MARGIN;
|
draw_w = cur_cell_w - left_gap + table.margin - BODY_MARGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EAX = table.cols.get(tr_pos-1)-td_pos) {
|
if (EAX = table.cols.get(tr_pos-1)-td_pos) {
|
||||||
@@ -466,20 +453,18 @@ void TWebBrowser::tag_table()
|
|||||||
}
|
}
|
||||||
if (table.cols.get(tr_pos-1)-td_pos>1) && (tag.get_number_of("width")) {
|
if (table.cols.get(tr_pos-1)-td_pos>1) && (tag.get_number_of("width")) {
|
||||||
if (strchr(tag.value, '%')) {
|
if (strchr(tag.value, '%')) {
|
||||||
tag.number = table.width.get(table.count) - table.margin - 23 - left_gap * tag.number / 100;
|
tag.number = cur_cell_w - table.margin - 23 - left_gap * tag.number / 100;
|
||||||
}
|
}
|
||||||
if (tag.number < draw_w) draw_w = tag.number;
|
if (tag.number < draw_w) draw_w = tag.number;
|
||||||
}
|
}
|
||||||
draw_y = row_start_y;
|
draw_y = row_start_y;
|
||||||
//canvas.WriteText(draw_x, draw_y, 10001001b, 0x0000FE, itoa(draw_x), NULL);
|
|
||||||
//canvas.WriteText(draw_x, draw_y+20, 10001001b, 0xFF0000, itoa(draw_w), NULL);
|
|
||||||
td_pos++;
|
td_pos++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (draw_x > table.width.get(table.count)) {
|
if (draw_x > cur_cell_w) {
|
||||||
draw_x = left_gap = table.margin;
|
draw_x = left_gap = table.margin;
|
||||||
draw_w = table.width.get(table.count) - table.margin - 23 - left_gap;
|
draw_w = cur_cell_w - table.margin - 23 - left_gap;
|
||||||
table.depth = 0;
|
table.depth = 0;
|
||||||
NewLine();
|
NewLine();
|
||||||
if (debug_mode) {
|
if (debug_mode) {
|
||||||
@@ -487,11 +472,8 @@ void TWebBrowser::tag_table()
|
|||||||
canvas.DrawBar(0, draw_y, 20, 20, 0xFF0000);
|
canvas.DrawBar(0, draw_y, 20, 20, 0xFF0000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
//if (left_gap + draw_w > list.w) {
|
||||||
if (left_gap + draw_w > list.w) {
|
// draw_w = list.w - left_gap;
|
||||||
draw_w = list.w - left_gap;
|
// if (debug_mode) debugln("anomaly draw_W");
|
||||||
if (debug_mode) debugln("anomaly draw_W");
|
//}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
//Copyright 2007-2021 by Veliant & Leency
|
//Copyright 2007-2025 by Veliant & Leency
|
||||||
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
|
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
|
||||||
|
|
||||||
//BUGS
|
//BUGS
|
||||||
|
@@ -112,4 +112,4 @@ char editbox_icons[] = FROM "res/editbox_icons.raw";
|
|||||||
|
|
||||||
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
||||||
|
|
||||||
char version[]="WebView 3.8";
|
char version[]="WebView 3.82";
|
@@ -4,10 +4,10 @@
|
|||||||
</head>
|
</head>
|
||||||
<body><pre>Welcome to WebView a Text-Based Browser.
|
<body><pre>Welcome to WebView a Text-Based Browser.
|
||||||
|
|
||||||
Bookmarks:
|
KolibriOS Bookmarks:
|
||||||
1. <a href=//kolibrios.org>KolibriOS homepage</a>
|
1. <a href=//kolibrios.org>Homepage</a>
|
||||||
2. <a href="//builds.kolibrios.org">Night-builds</a>
|
2. <a href="//builds.kolibrios.org">Night-builds</a>
|
||||||
3. <a href="//ftp.kolibrios.org">KolibriOS FTP</a>
|
3. <a href="//ftp.kolibrios.org">FTP Server</a>
|
||||||
|
|
||||||
<font bg=#F8F15B>By the way,</font>
|
<font bg=#F8F15B>By the way,</font>
|
||||||
<font color="#555555">• You can check for browser updates from the main menu.
|
<font color="#555555">• You can check for browser updates from the main menu.
|
||||||
|
@@ -1,16 +1,15 @@
|
|||||||
<html>
|
<html><head><meta charset="cp-866">
|
||||||
<head>
|
<title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD><E0A0AD><EFBFBD></title></head>
|
||||||
<meta charset="cp-866">
|
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD>㧥<EFBFBD> WebView!
|
||||||
<title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD><E0A0AD><EFBFBD></title>
|
|
||||||
</head>
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> KolibriOS:<ol>
|
||||||
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
<li><a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᠩ<></a>
|
||||||
1. <a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᠩ<> KolibriOS</a>
|
<li><a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
|
||||||
2. <a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
|
<li><a href="//ftp.kolibrios.org">FTP <20><>ࢥ<EFBFBD></a></ol>
|
||||||
3. <a href="//ftp.kolibrios.org">KolibriOS FTP</a>
|
|
||||||
|
|
||||||
<font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
|
<font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
|
||||||
<font color="#555555">• <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<font color="#555555">• <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
• <20><><EFBFBD> <20><><EFBFBD>᪠ <20> Google <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>᭮<EFBFBD> <20><>ப<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ctrl+Enter
|
• <20><><EFBFBD> <20><><EFBFBD>᪠ <20> Google <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>᭮<EFBFBD> <20><>ப<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ctrl+Enter
|
||||||
• <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F6 <20><>६<EFBFBD>頥<EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
• <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F6 <20><>६<EFBFBD>頥<EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
• <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><>࠭<EFBFBD><E0A0AD><EFBFBD>, <20><><EFBFBD> <20>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㣫<> <20><><EFBFBD><EFBFBD>.
|
• <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><>࠭<EFBFBD><E0A0AD><EFBFBD>, <20><><EFBFBD> <20>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㣫<> <20><><EFBFBD><EFBFBD>.
|
||||||
</font>
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
; <EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> console.inc - <EFBFBD><EFBFBD><EFBFBD>ᠭ<EFBFBD><EFBFBD> scrollbar
|
; Helper file for console.inc - scrollbar definition
|
||||||
; <EFBFBD><EFBFBD><EFBFBD>⨪<EFBFBD><EFBFBD>쭠<EFBFBD> <EFBFBD>ப<EFBFBD><EFBFBD>⪠
|
; Vertical scrolling
|
||||||
virtual at 0
|
virtual at 0
|
||||||
file 'conscrlv.bmp', 36h
|
file 'conscrlv.bmp', 36h
|
||||||
; sanity check
|
; sanity check
|
||||||
@@ -28,7 +28,7 @@ if con.vscroll_btn_height*4 + con.vscroll_bgr_height*2 \
|
|||||||
error 'conscrlv.bmp: invalid dimensions!'
|
error 'conscrlv.bmp: invalid dimensions!'
|
||||||
end if
|
end if
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>㦠<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BMP, <EFBFBD><EFBFBD> 室<EFBFBD> <EFBFBD>८<EFBFBD>ࠧ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 7-<EFBFBD> <EFBFBD>㭪樨
|
; Load BMP data, converting it into data for sysfn 7 on the fly
|
||||||
con.vscroll:
|
con.vscroll:
|
||||||
repeat con.vscroll_height
|
repeat con.vscroll_height
|
||||||
file 'conscrlv.bmp':36h + ((con.vscroll_width*3+3) and not 3)*(con.vscroll_height - %),\
|
file 'conscrlv.bmp':36h + ((con.vscroll_width*3+3) and not 3)*(con.vscroll_height - %),\
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
; <EFBFBD>㭪樨 ࠡ<><E0A0A1><EFBFBD> <20> <20><><EFBFBD>᮫<EFBFBD><E1AEAB> <20><><EFBFBD> <20>ணࠬ<E0AEA3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; SPDX-License-Identifier: GPL-2.0
|
||||||
|
; Functions for interaction with the console for KolibriOS programs
|
||||||
; diamond, 2006-2008
|
; diamond, 2006-2008
|
||||||
|
; Copyright (C) 2006-2025 KolibriOS team
|
||||||
|
|
||||||
format MS COFF
|
format MS COFF
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@ START:
|
|||||||
or eax, -1
|
or eax, -1
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>᮫<EFBFBD>
|
; Console initialization
|
||||||
; void __stdcall con_init(dword wnd_width, dword wnd_height,
|
; void __stdcall con_init(dword wnd_width, dword wnd_height,
|
||||||
; dword scr_width, dword scr_height, const char* title);
|
; dword scr_width, dword scr_height, const char* title);
|
||||||
|
|
||||||
@@ -271,13 +272,13 @@ con_write_length:
|
|||||||
pop esi ebx
|
pop esi ebx
|
||||||
ret 8
|
ret 8
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
; Each character is classified as one of the following
|
||||||
con.printfc.normal = 0 ; <EFBFBD><EFBFBD>ଠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD>
|
con.printfc.normal = 0 ; normal character
|
||||||
con.printfc.percent = 1 ; '%'
|
con.printfc.percent = 1 ; '%'
|
||||||
con.printfc.dot = 2 ; '.'
|
con.printfc.dot = 2 ; '.'
|
||||||
con.printfc.asterisk = 3 ; '*'
|
con.printfc.asterisk = 3 ; '*'
|
||||||
con.printfc.zero = 4 ; '0'
|
con.printfc.zero = 4 ; '0'
|
||||||
con.printfc.digit = 5 ; <EFBFBD><EFBFBD><EFBFBD>㫥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
con.printfc.digit = 5 ; non-null digit
|
||||||
con.printfc.plus = 6 ; '+'
|
con.printfc.plus = 6 ; '+'
|
||||||
con.printfc.minus = 7 ; '-'
|
con.printfc.minus = 7 ; '-'
|
||||||
con.printfc.sharp = 8 ; '#'
|
con.printfc.sharp = 8 ; '#'
|
||||||
@@ -376,24 +377,24 @@ con_printf:
|
|||||||
jmp .normal
|
jmp .normal
|
||||||
.spec_begin:
|
.spec_begin:
|
||||||
xor ebx, ebx
|
xor ebx, ebx
|
||||||
; bl = ⨯ <20><><EFBFBD><EFBFBD>樨:
|
; bl = position type:
|
||||||
; 0 = <EFBFBD><EFBFBD>砫<EFBFBD>
|
; 0 = start
|
||||||
; 1 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭ <20><><EFBFBD><EFBFBD>騩 0 <20> ᯥ<><E1AFA5>䨪<EFBFBD>樨 <20><>ଠ<EFBFBD><E0ACA0>
|
; 1 = read leading 0 in format specification
|
||||||
; 2 = <EFBFBD><EFBFBD>⠥<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ਭ<EFBFBD>
|
; 2 = read width field
|
||||||
; 3 = <EFBFBD><EFBFBD>⠥<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>筮<EFBFBD><E7ADAE><EFBFBD>
|
; 3 = read precision field
|
||||||
; 4 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD> <20><><EFBFBD><EFBFBD> ࠧ<><E0A0A7><EFBFBD><EFBFBD> <20><><EFBFBD>㬥<EFBFBD><E3ACA5><EFBFBD>
|
; 4 = read argument size field
|
||||||
; 5 = <EFBFBD><EFBFBD>⠥<EFBFBD> <20><><EFBFBD><EFBFBD> ⨯<>
|
; 5 = read type field
|
||||||
; bh = 䫠<EFBFBD><EFBFBD>:
|
; bh = flags:
|
||||||
; 1 = 䫠<EFBFBD> '#', <EFBFBD>뢮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0/0x/0X
|
; 1 = flag '#', output 0/0x/0X
|
||||||
; 2 = 䫠<EFBFBD> '-', <EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
; 2 = flag '-', align left
|
||||||
; 4 = 䫠<EFBFBD> '0', <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ﬨ
|
; 4 = flag '0', zero padding
|
||||||
; 8 = 䫠<EFBFBD> 'h', <EFBFBD><EFBFBD><EFBFBD><EFBFBD>⪨<EFBFBD> <20><><EFBFBD>㬥<EFBFBD><E3ACA5>
|
; 8 = flag 'h', short argument
|
||||||
push -1
|
push -1
|
||||||
; dword [esp+8] = precision
|
; dword [esp+8] = precision
|
||||||
push -1
|
push -1
|
||||||
; dword [esp+4] = width
|
; dword [esp+4] = width
|
||||||
push 0
|
push 0
|
||||||
; byte [esp] = 䫠<EFBFBD> 0/'+'/' '
|
; byte [esp] = flag 0/'+'/' '
|
||||||
.spec:
|
.spec:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
lodsb
|
lodsb
|
||||||
@@ -529,7 +530,7 @@ con_printf:
|
|||||||
@@:
|
@@:
|
||||||
push edx
|
push edx
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
; <EFBFBD><EFBFBD> <20> eax, <20>᭮<EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><E1ABA5><EFBFBD> <20> ecx
|
; number in eax, radix in ecx
|
||||||
@@:
|
@@:
|
||||||
cmp dword [esp+16+8], 0
|
cmp dword [esp+16+8], 0
|
||||||
jnz .print_num
|
jnz .print_num
|
||||||
@@ -1777,10 +1778,10 @@ con.data2image:
|
|||||||
mov al, [esi+1]
|
mov al, [esi+1]
|
||||||
push eax
|
push eax
|
||||||
and al, 0xF
|
and al, 0xF
|
||||||
mov ebx, eax ; 梥<EFBFBD> ⥪<><E2A5AA><EFBFBD>
|
mov ebx, eax ; text color
|
||||||
pop eax
|
pop eax
|
||||||
shr al, 4
|
shr al, 4
|
||||||
mov ebp, eax ; 梥<EFBFBD> 䮭<>
|
mov ebp, eax ; background color
|
||||||
sub ebx, ebp
|
sub ebx, ebp
|
||||||
lodsb
|
lodsb
|
||||||
inc esi
|
inc esi
|
||||||
@@ -2188,7 +2189,7 @@ con_gets2:
|
|||||||
sub ebx, 1
|
sub ebx, 1
|
||||||
jle .ret
|
jle .ret
|
||||||
mov byte [esi], 0
|
mov byte [esi], 0
|
||||||
xor ecx, ecx ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㦥 <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
xor ecx, ecx ; length of the already entered string
|
||||||
call con.get_data_ptr
|
call con.get_data_ptr
|
||||||
.loop:
|
.loop:
|
||||||
call con_getch2
|
call con_getch2
|
||||||
@@ -2596,9 +2597,9 @@ con.wake:
|
|||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; <EFBFBD><EFBFBD>⮪ <20><><EFBFBD><EFBFBD> <20><><EFBFBD>᮫<EFBFBD>. <20><>ࠡ<EFBFBD><E0A0A1>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD> <20> <20>뢮<EFBFBD>.
|
; Console window thread. Handles input and output.
|
||||||
con.thread:
|
con.thread:
|
||||||
; <EFBFBD><EFBFBD>⮪ ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IPC, <20><><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD> ⮣<>, <20>⮡<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>뫮 "ࠧ<>㤨<EFBFBD><E3A4A8>"
|
; The thread responds to IPC, which is used only so that it can be "waken up"
|
||||||
push 40
|
push 40
|
||||||
pop eax
|
pop eax
|
||||||
push 0x80000067 ; program dont getting events mouse, when it dont active
|
push 0x80000067 ; program dont getting events mouse, when it dont active
|
||||||
@@ -3212,7 +3213,7 @@ con.draw_image:
|
|||||||
@@:
|
@@:
|
||||||
int 0x40
|
int 0x40
|
||||||
push edx
|
push edx
|
||||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㭪<EFBFBD>
|
; Calculate the height of the slider
|
||||||
mov ax, dx
|
mov ax, dx
|
||||||
sub eax, con.vscroll_btn_height
|
sub eax, con.vscroll_btn_height
|
||||||
mov ecx, eax
|
mov ecx, eax
|
||||||
@@ -3222,7 +3223,7 @@ con.draw_image:
|
|||||||
jae @f
|
jae @f
|
||||||
mov al, 5
|
mov al, 5
|
||||||
@@:
|
@@:
|
||||||
; eax = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㭪<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㭪<EFBFBD>
|
; eax = slider height. Calculate the slider position
|
||||||
mov [con.vscrollbar_size], eax
|
mov [con.vscrollbar_size], eax
|
||||||
xchg eax, ecx
|
xchg eax, ecx
|
||||||
sub eax, ecx
|
sub eax, ecx
|
||||||
@@ -3232,7 +3233,7 @@ con.draw_image:
|
|||||||
div ebx
|
div ebx
|
||||||
pop edx
|
pop edx
|
||||||
push edx
|
push edx
|
||||||
; ecx = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㭪<EFBFBD>, eax = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; ecx = slider height, eax = position
|
||||||
add eax, con.vscroll_btn_height
|
add eax, con.vscroll_btn_height
|
||||||
mov [con.vscrollbar_pos], eax
|
mov [con.vscrollbar_pos], eax
|
||||||
mov ebx, con.vscroll_bgr2
|
mov ebx, con.vscroll_bgr2
|
||||||
@@ -3331,8 +3332,8 @@ con.extended_numlock:
|
|||||||
|
|
||||||
cursor_esc dd 27 + ('[' shl 8)
|
cursor_esc dd 27 + ('[' shl 8)
|
||||||
|
|
||||||
; <EFBFBD> ⥪<>饩 ॠ<><E0A5A0><EFBFBD><EFBFBD>樨 <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><> 㬮<>砭<EFBFBD><E7A0AD> ⠪<><E2A0AA><EFBFBD>.
|
; In the current implementation, the default values are:
|
||||||
; <EFBFBD> <20><><EFBFBD><EFBFBD>饬 <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><> ini-䠩<><E4A0A9> console.ini.
|
; In the future, they may be read as parameters from the console.ini ini file.
|
||||||
con.def_wnd_width dd 80
|
con.def_wnd_width dd 80
|
||||||
con.def_wnd_height dd 25
|
con.def_wnd_height dd 25
|
||||||
con.def_scr_width dd 80
|
con.def_scr_width dd 80
|
||||||
|
@@ -1,91 +1,91 @@
|
|||||||
console.obj <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
console.obj экспортирует следующие функции:
|
||||||
|
|
||||||
typedef unsigned long dword; /* 32-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
typedef unsigned long dword; /* 32-битное беззнаковое целое */
|
||||||
typedef unsigned short word; /* 16-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
typedef unsigned short word; /* 16-битное беззнаковое целое */
|
||||||
|
|
||||||
void __stdcall con_init(dword wnd_width, dword wnd_height,
|
void __stdcall con_init(dword wnd_width, dword wnd_height,
|
||||||
dword scr_width, dword scr_height, const char* title);
|
dword scr_width, dword scr_height, const char* title);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Инициализация консоли. Вызывается один раз в начале программы.
|
||||||
wnd_width, wnd_height - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
wnd_width, wnd_height - высота и ширина (в символах) видимой в окне консоли
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
области;
|
||||||
scr_width, scr_height - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
scr_width, scr_height - высота и ширина (в символах) всей консоли;
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> -1 (=0xFFFFFFFF)
|
любые из первых 4 параметров могут быть установлены в -1 (=0xFFFFFFFF)
|
||||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
- использовать значения по умолчанию;
|
||||||
title - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
title - заголовок окна консоли.
|
||||||
|
|
||||||
void __stdcall con_exit(bool bCloseWindow);
|
void __stdcall con_exit(bool bCloseWindow);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bCloseWindow
|
Вызывается при завершении программы. Если (байтовый) параметр bCloseWindow
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
нулевой, то окно консоли остаётся на экране до того момента, как пользователь
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " [Finished]".
|
пожелает закрыть его, при этом к заголовку добавляется строка " [Finished]".
|
||||||
|
|
||||||
void __stdcall con_set_title(const char* title);
|
void __stdcall con_set_title(const char* title);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Устанавливает новый заголовок окна консоли.
|
||||||
|
|
||||||
void __stdcall con_write_asciiz(const char* string);
|
void __stdcall con_write_asciiz(const char* string);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ASCIIZ-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Выводит ASCIIZ-строку в консоль в текущую позицию, продвигает текущую позицию.
|
||||||
|
|
||||||
void __stdcall con_write_string(const char* string, dword length);
|
void __stdcall con_write_string(const char* string, dword length);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> con_write_asciiz, <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> length <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Аналогично con_write_asciiz, но выводит ровно length символов.
|
||||||
|
|
||||||
int __cdecl con_printf(const char* format, ...)
|
int __cdecl con_printf(const char* format, ...)
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> printf <EFBFBD><EFBFBD> ANSI C.
|
Стандартная printf из ANSI C.
|
||||||
|
|
||||||
dword __stdcall con_get_flags(void);
|
dword __stdcall con_get_flags(void);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Получает значение флагов вывода.
|
||||||
dword __stdcall con_set_flags(dword new_flags);
|
dword __stdcall con_set_flags(dword new_flags);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Устанавливает значение флагов вывода. Возвращает старое значение.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>):
|
Флаги (битовая маска):
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* цвет текста */
|
||||||
#define CON_COLOR_BLUE 1
|
#define CON_COLOR_BLUE 1
|
||||||
#define CON_COLOR_GREEN 2
|
#define CON_COLOR_GREEN 2
|
||||||
#define CON_COLOR_RED 4
|
#define CON_COLOR_RED 4
|
||||||
#define CON_COLOR_BRIGHT 8
|
#define CON_COLOR_BRIGHT 8
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
/* цвет фона */
|
||||||
#define CON_BGR_BLUE 0x10
|
#define CON_BGR_BLUE 0x10
|
||||||
#define CON_BGR_GREEN 0x20
|
#define CON_BGR_GREEN 0x20
|
||||||
#define CON_BGR_RED 0x40
|
#define CON_BGR_RED 0x40
|
||||||
#define CON_BGR_BRIGHT 0x80
|
#define CON_BGR_BRIGHT 0x80
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* управление выводом */
|
||||||
#define CON_IGNORE_SPECIALS 0x100
|
#define CON_IGNORE_SPECIALS 0x100
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
/* Если флаг сброшен, функция интерпретирует специальные символы:
|
||||||
10 ('\n') - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
10 ('\n') - перевод в начало следующей строки
|
||||||
13 ('\r') - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
13 ('\r') - перевод в начало текущей строки
|
||||||
8 ('\b') - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>)
|
8 ('\b') - забой (на символ назад)
|
||||||
9 ('\t') - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
9 ('\t') - табуляция
|
||||||
27 ('\033'='\x1B') - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Esc-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
27 ('\033'='\x1B') - начало Esc-последовательности;
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. */
|
иначе выводит их как обычные символы. */
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Esc-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
/* Поддерживаемые Esc-последовательности:
|
||||||
Esc[<number1>;<number2>;<number3>m - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
Esc[<number1>;<number2>;<number3>m - выбор атрибутов символов:
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
можно указывать один, два или три кода в любом порядке;
|
||||||
0 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
0 = нормальное изображение (белые символы на чёрном фоне)
|
||||||
1 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
1 = выделение яркостью
|
||||||
5 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
5 = яркий фон
|
||||||
7 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
7 = реверсное изображение (чёрные символы на белом фоне)
|
||||||
30 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
30 = чёрные символы
|
||||||
31 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
31 = красные символы
|
||||||
32 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
32 = зелёные символы
|
||||||
33 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
33 = жёлтые символы
|
||||||
34 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
34 = синие символы
|
||||||
35 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
35 = фиолетовые символы
|
||||||
36 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
36 = бирюзовые символы
|
||||||
37 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
37 = белые символы
|
||||||
40 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
40 = чёрный фон
|
||||||
41 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
41 = красный фон
|
||||||
42 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
42 = зелёный фон
|
||||||
43 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
43 = жёлтый фон
|
||||||
44 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
44 = синий фон
|
||||||
45 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
45 = фиолетовый фон
|
||||||
46 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
46 = бирюзовый фон
|
||||||
47 = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
47 = белый фон
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
Следующие последовательности появились в версии 5 библиотеки:
|
||||||
Esc[<number>A - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <number> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
Esc[<number>A - переместить курсор на <number> строк вверх
|
||||||
Esc[<number>B - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <number> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
Esc[<number>B - переместить курсор на <number> строк вниз
|
||||||
Esc[<number>C - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <number> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Esc[<number>C - переместить курсор на <number> позиций вправо
|
||||||
Esc[<number>D - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <number> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
Esc[<number>D - переместить курсор на <number> позиций влево
|
||||||
Esc[<number1>;<number2>H = Esc[<number1>;<number2>f -
|
Esc[<number1>;<number2>H = Esc[<number1>;<number2>f -
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <number1>,<number2>
|
установить курсор в позицию с координатами <number1>,<number2>
|
||||||
Esc[2J - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
Esc[2J - очистить экран, переместить курсор в левый верхний угол
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
Следующие последовательности появились в версии 9 библиотеки:
|
||||||
Esc[J or Esc[0J - Erase everything below cursor
|
Esc[J or Esc[0J - Erase everything below cursor
|
||||||
Esc[1J - Erase everything above cursor
|
Esc[1J - Erase everything above cursor
|
||||||
Esc[K - Erase in line
|
Esc[K - Erase in line
|
||||||
@@ -107,83 +107,83 @@ dword __stdcall con_set_flags(dword new_flags);
|
|||||||
Esc]2<string>ST/BEL - Implemented identical as Esc]0.
|
Esc]2<string>ST/BEL - Implemented identical as Esc]0.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
/* сигнал о закрытии окна консоли; появился в версии 6 библиотеки;
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> con_set_flags */
|
флаг игнорируется функцией con_set_flags */
|
||||||
#define CON_WINDOW_CLOSED 0x200
|
#define CON_WINDOW_CLOSED 0x200
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 7.
|
Значение по умолчанию для флагов = 7.
|
||||||
|
|
||||||
int __stdcall con_get_font_height(void);
|
int __stdcall con_get_font_height(void);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Возвращает значение высоты шрифта.
|
||||||
|
|
||||||
int __stdcall con_get_cursor_height(void);
|
int __stdcall con_get_cursor_height(void);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Получает значение высоты курсора.
|
||||||
int __stdcall con_set_cursor_height(int new_height);
|
int __stdcall con_set_cursor_height(int new_height);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Устанавливает значение высоты курсора. Возвращает старое значение.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> font_height-1)
|
Попытка установить значение вне корректного интервала (от 0 до font_height-1)
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
игнорируется.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Курсор высоты 0 не отображается на экране.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 15% <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Значение высоты по умолчанию - 15% от высоты шрифта.
|
||||||
|
|
||||||
int __stdcall con_getch(void);
|
int __stdcall con_getch(void);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Считывает один символ с клавиатуры.
|
||||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ASCII-<2D><><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Для обычных символов возвращается ASCII-код. Для расширенных символов
|
||||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Fx <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0,
|
(например, Fx и стрелочек) первый вызов функции возвращает 0,
|
||||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>).
|
а повторный вызов возвращает расширенный код (подобно DOS-функциям ввода).
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Начиная с версии 7 библиотеки, после закрытия окна консоли возвращается
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.
|
значение 0.
|
||||||
|
|
||||||
word __stdcall con_getch2(void);
|
word __stdcall con_getch2(void);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ASCII-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Считывает один символ с клавиатуры. Младший байт содержит ASCII-код клавиши
|
||||||
(0 <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
(0 для расширенных символов), старший - расширенный код
|
||||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BIOS-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>).
|
(подобно BIOS-функциям ввода).
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Начиная с версии 7 библиотеки, после закрытия окна консоли возвращается
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.
|
значение 0.
|
||||||
|
|
||||||
int __stdcall con_kbhit(void);
|
int __stdcall con_kbhit(void);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Возвращает 1, если какая-то клавиша была нажата, 0 иначе. Для считывания
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> con_getch <EFBFBD> con_getch2.
|
нажатой клавиши предназначены функции con_getch и con_getch2.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.
|
Начиная с версии 6 библиотеки, после закрытия окна консоли всегда возвращает 1.
|
||||||
|
|
||||||
char* __stdcall con_gets(char* str, int n);
|
char* __stdcall con_gets(char* str, int n);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Считывает строку с клавиатуры. Ввод прерывается при поступлении символа
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n-1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>
|
новой строки, а также по прочтении n-1 символа (в зависимости от того, что
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
произойдёт раньше). В первом случае символ новой строки также записывается в
|
||||||
str. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
str. Считанная строка дополняется нулевым символом.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Начиная с версии 6 библиотеки, функция возвращает указатель на введённую
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> NULL, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
строку при успешном чтении и NULL, если окно консоли было закрыто. До версии
|
||||||
6 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
6 возвращаемое значение было неопределено.
|
||||||
|
|
||||||
typedef int (__stdcall * con_gets2_callback)(int keycode, char** pstr, int* pn, int* ppos);
|
typedef int (__stdcall * con_gets2_callback)(int keycode, char** pstr, int* pn, int* ppos);
|
||||||
char* __stdcall con_gets2(con_gets2_callback callback, char* str, int n);
|
char* __stdcall con_gets2(con_gets2_callback callback, char* str, int n);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Функция появилась в версии 4 библиотеки.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> con_gets <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Полностью аналогична con_gets за исключением того, что когда пользователь
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> callback-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
нажимает нераспознанную клавишу, вызывается указанная callback-процедура
|
||||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> up/down <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> tab <EFBFBD><EFBFBD><EFBFBD>
|
(которая может, например, обрабатывать up/down для истории ввода и tab для
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
автодополнения). Процедуре передаётся код клавиши и три указателя - на строку,
|
||||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
на лимит и на текущую позицию в строке. Процедура может менять содержимое
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
строки и может менять саму строку (например, перераспределить память для
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
увеличения лимита), лимит, позицию в строке - для этого и передаются указатели.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 0=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; 1=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Возвращаемое значение: 0=строка не менялась; 1=строка изменилась, необходимо
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>; 2=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
удалить старую и вывести новую; 2=строка изменилась, необходимо её вывести;
|
||||||
3=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
3=немедленно выйти из функции.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Начиная с версии 6 библиотеки, функция возвращает указатель на введённую
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> NULL, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
строку при успешном чтении и NULL, если окно консоли было закрыто. До версии
|
||||||
6 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
6 возвращаемое значение было неопределено.
|
||||||
|
|
||||||
void __stdcall con_cls();
|
void __stdcall con_cls();
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Функция появилась в версии 5 библиотеки.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
Очищает экран и переводит курсор в левый верхний угол.
|
||||||
|
|
||||||
void __stdcall con_get_cursor_pos(int* px, int* py);
|
void __stdcall con_get_cursor_pos(int* px, int* py);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Функция появилась в версии 5 библиотеки.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> *px <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x, <EFBFBD> *py - <EFBFBD><EFBFBD> <20><><EFBFBD> y.
|
Записывает в *px текущую координату курсора по оси x, в *py - по оси y.
|
||||||
|
|
||||||
void __stdcall con_set_cursor_pos(int x, int y);
|
void __stdcall con_set_cursor_pos(int x, int y);
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
Функция появилась в версии 5 библиотеки.
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><>
|
Устанавливает курсор в позицию с указанными координатами. Если какой-то из
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> scr_width-1
|
параметров выходит за пределы соответствующего диапазона (от 0 до scr_width-1
|
||||||
<EFBFBD><EFBFBD><EFBFBD> x, <EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD> scr_height-1 <EFBFBD><EFBFBD><EFBFBD> y, scr_width <EFBFBD> scr_height <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
для x, от 0 до scr_height-1 для y, scr_width и scr_height были заданы при
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> con_init), <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
вызове con_init), то соответствующая координата курсора не меняется.
|
||||||
|
|
||||||
int __stdcall con_get_input(char* buf, int buflen);
|
int __stdcall con_get_input(char* buf, int buflen);
|
||||||
Read as many input events as are available and fit in the receive buffer.
|
Read as many input events as are available and fit in the receive buffer.
|
||||||
|
Reference in New Issue
Block a user