Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[C][Dos9/Linux] pTXTCOLOR - TXTCOLOR pour Linux - TSnake41
Auteur Message
Répondre en citant
Message [C][Dos9/Linux] pTXTCOLOR - TXTCOLOR pour Linux - TSnake41 
Bonjour,
cette commande externe pourrait faire penser à du plagiat mais c'est un vrai portage de TXTCOLOR de carlos

Cette commande est compatible Linux et Dos9, c'est donc une véritable commande externe Linux/Dos9.
Regardez ce que ça donne :

Code:
@echo off
for %%A in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do (
    for %%B in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do (
        txtcolor %%A%%B 0 "Dos9"
    )
    echo.
)


Utilisation (identique à la commande originale) :
Citation:
txtcolor background(0-F)foreground(0-F) printNewLine(0/1) "the text"

Téléchargement : ftp://149.91.81.61/tsnake41/ptxtcolor/ptxtcolor.tar.xz
La commande est sous licence libre (MIT).

NOTE : Commande non-compatible avec Windows malgré que la compilation peut fonctionner.
NOTE2 : La commande est "txtcolor" dans l'archive et est compilé pour x86_64. (pas d’extensions comme .exe ou autre)
NOTE3 : Certaines couleurs ne marchent pas en mode texte (mode non-graphique).

Code:
[lang=c]/*
    Copyright (c) 2016 Astie Teddy

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.
*/

#include <stdio.h>
#include <stdlib.h>

#include "main.h"

short winToUnixColor(char, bool);

int main(int argc, char const *argv[])
{
    if (argc == 4 && (argv[2] + 1) != '\0') {
        unsigned char color = strtol(argv[1], NULL, 16);
        bool new_line = atoi(argv[2]);

        printf("\e[%dm\e[%dm",
            // Shift are the life
            winToUnixColor(color & 0xF, true), // Foreground
            winToUnixColor(color >> 4, false)  // Background
        );

        printf("%s", argv[3]);

        // Reset color
        printf("\e[%dm\e[%dm", reset_foreground, reset_background);

        if (new_line)
            putchar('\n');

    } else
        puts("txtcolor background(0-F)foreground(0-F)"
             " printNewLine(0/1) \"the text\"");

    return 0;
}

short winToUnixColor(char color, bool foreground)
{
    if (foreground)
        return win_to_unix_table[color] + 30;
    else // background
        return win_to_unix_table[color] + 40;

    return 0;
}
Code:
[lang=c]/*
    Copyright (c) 2016 Astie Teddy

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.
*/

#ifndef DEF_MAIN
#define DEF_MAIN

// Booleans
typedef enum { false = 0, true = !false } bool;

/*
    Foreground offset = 30
    Background offset = 40
*/

// Foreground offset + 9
static const char reset_foreground = 39;

// Background offset + 9
static const char reset_background = 49;

/* This table is used to convert Dos
   color to its Unix equivalent */
static const char win_to_unix_table[16] = {
    0, // Black
    4, // Blue
    2, // Green
    6, // Aqua
    1, // Red
    5, // Purple
    3, // Yellow
    7, // Light Gray
    60, // Gray
    64, // Light Blue
    62, // Light Green
    66, // Light Aqua
    61, // Light Red
    65, // Light Purple
    63, // Light Yellow
    67, // White
};

#endif


Testé et fonctionnel sous Archlinux x86_64.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [C][Dos9/Linux] pTXTCOLOR - TXTCOLOR pour Linux - TSnake41 
J'ai fais une refonte de ptxtcolor cette fois ci totalement compatible avec le mode texte Okay.
Egalement, le code n'est plus en C mais en En-tête Shell + Batch pur.
Code:
#!/bin/sh
# Dos9 in "txtcolor" at :txtcolor label.
echo call /e $0 :txtcolor $* | dos9 /A:qe
exit

:txtcolor
if "%3" EQU "" goto :showhelp

set "e="

for %%a in (
    "0:0" "8:1;0"
    "1:4" "9:1;4"
    "2:2" "A:1;2"
    "3:6" "B:1;6"
    "4:1" "C:1;1"
    "5:5" "D:1;5"
    "6:3" "E:1;3"
    "7:7" "F:1;7"
) do (
    set c=%%a
    set c=!c:~1,-1!
    set i=!c:~0,1!
    set /a t=0x!i! >NUL

    if !t! GTR 7 (
        call set f!i!=!c:~2,2!3!c:~4!
        call set b!i!=!c:~2,2!4!c:~4!
    ) else (
        call set f!i!=3!c:~2!
        call set b!i!=4!c:~2!
    )
)

set c=%1
set fc=!f%c:~1,1%!
set bc=!b%c:~0,1%!
set "t=%e%[0m%e%[%fc%m%e%[%bc%m%3%e%[39m%e%[49m"

if "%2" EQU "0" (
    <NUL set /p =!t!
) else if "%2" EQU "1" (
    echo !t!
)
exit

:showhelp
echo txtcolor background^(0-F^)foreground^(0-F^) printNewLine(0/1) "the text"
exit
Le mieux est de le nommer txtcolor sans extension.
Il doit OBLIGATOIREMENT avoir le drapeau "executable" (x) et s'appeler "txtcolor" (sans extention) pour être lancé.
Pour le mettre :
Code:
[lang=sh]chmod +x txtcolor





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Message [C][Dos9/Linux] pTXTCOLOR - TXTCOLOR pour Linux - TSnake41 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch