Skip to content

Commit f6662b7

Browse files
committed
Version 2026a (step 1.)
1 parent c56b3e0 commit f6662b7

4 files changed

Lines changed: 61 additions & 50 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# Manually define WITHTESTS=true, if you want build test applications!
77
#
88
# (c)ISS UW, @author Wojciech Borkowski
9-
# @date 2025-12-09 (last update)
9+
# @date 2026-01-06 (last update)
1010
##################################################################################
1111

1212
project(symshelllight)
@@ -208,7 +208,7 @@ endif()
208208
endif()
209209
#KONIEC - THE END
210210
#********************************************************************/
211-
#* SYMSHELLLIGHT version 2023 */
211+
#* SYMSHELLLIGHT version 2025 */
212212
#********************************************************************/
213213
#* THIS CODE IS DESIGNED & COPYRIGHT BY: */
214214
#* W O J C I E C H B O R K O W S K I */

SVG/symshsvg.cpp

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@
1717
** \n https://www.researchgate.net/profile/WOJCIECH_BORKOWSKI
1818
** \n https://github.com/borkowsk
1919
**
20-
** \library SYMSHELLLIGHT version 2023b
21-
**
22-
* */
20+
** \library SYMSHELLLIGHT version 2026a
21+
**
22+
* @date 2026-01-06 (last modification)
23+
*/
2324
#include <iostream>
2425
#include <fstream>
2526
#include <cassert>
@@ -504,8 +505,12 @@ void clear_screen()
504505
GrListPosition = -1; //Pusto
505506
}
506507

507-
/// Czyszczenie optymalizujące. Specjalnie dla tego modułu. W innych nie robi nic.
508-
/// Cały ekran/okno zostanie wirtualnie "wymazany/e"
508+
/// Czyszczenie optymalizujące.
509+
/// Cały ekran/okno zostanie wirtualnie "wymazany/e".
510+
/// @note
511+
/// Specjalnie dla tego modułu, bo tu jest bardzo tanie. W innych nie robi nic, bo czyszczenie jest tam
512+
/// kosztowne, i zwykle staramy się go unikać, a tylko zamazywać nową treścią.
513+
///
509514
int invalidate_screen()
510515
{
511516
if(ssh_trace_level) cout <<"SVG: " << _FUNCTION_NAME_ << SEP;
@@ -521,19 +526,19 @@ ssh_mode print_transparently(ssh_mode Yes)
521526
{
522527
if(ssh_trace_level>2) cout <<"SVG: " << _FUNCTION_NAME_ << SEP;//print_transparently
523528
if(ssh_trace_level>2) cout << Yes << endl;
524-
int old = GrPrintTransparently;
529+
int old = GrPrintTransparently;
525530
GrPrintTransparently = Yes;
526-
return old;
531+
return old;
527532
}
528533

529534
/// Ustala szerokość linii. Może byc kosztowne (?). Zwraca ustawienie poprzednie.
530535
ssh_natural line_width(ssh_natural width)
531536
{
532537
if(ssh_trace_level>2) cout <<"SVG: " << _FUNCTION_NAME_ << SEP;//line_width
533538
if(ssh_trace_level>2) cout << width << endl;
534-
int old = GrLineWidth;
539+
int old = GrLineWidth;
535540

536-
GrLineWidth = width;
541+
GrLineWidth = width;
537542
if(GrLineWidth<0)
538543
GrLineWidth=1; // WHY NOT 0!!!
539544
if(GrLineWidth>3)
@@ -546,7 +551,7 @@ ssh_natural line_width(ssh_natural width)
546551
first_time=0;
547552
}
548553
}
549-
return old;
554+
return old;
550555
}
551556

552557
/// \brief Ustala styl rysowania linii: `SSH_LINE_SOLID`, `SSH_LINE_DOTTED`, `SSH_LINE_DASHED`
@@ -614,7 +619,7 @@ void set_gray(ssh_color shade,ssh_intensity intensity)
614619
/// \param Style
615620
///
616621
/// Ustala aktualny kolor linii za pomocą typu ssh_color (koloru indeksowanego)
617-
/// ssh_color c - jest jak dotąd zawsze traktowany jako indeks do tabeli kolorów[1]
622+
/// ssh_color c jest jak dotąd zawsze traktowany jako indeks do tabeli kolorów[1]
618623
/// w których pierwsze 256 ustala się wg. jakiejś skali,
619624
/// a następne 256 są odcieniami szarości, domyślnie od czarnego do białego
620625
/// Kolory indeksowane w _symshwin_ i _symshx11_ korzystają z cache'owania systemowych pisaków,
@@ -653,7 +658,7 @@ void set_pen(ssh_color c,ssh_natural line_width, ssh_mode Style)
653658
/// \param width
654659
/// \param Style
655660
///
656-
/// Poza kolorem linii za pomocą składowych RGB, ustala też od razu styl, żeby nie mnożyć wywołań
661+
/// Poza kolorem linii za pomocą składowych RGB ustala też od razu styl, żeby nie mnożyć wywołań.
657662
/// \internal
658663
/// Jeżeli kolory indeksowane korzystają z cache'owania tego samego pisaka to
659664
/// należy ustalić kolor aktualny na pusty np. curr_color=-1;
@@ -841,7 +846,7 @@ ssh_natural screen_width()
841846
return GrScreenWi;
842847
}
843848

844-
/// Aktualne rozmiary znaku - wysokość.
849+
/// Aktualne rozmiary znaku wysokość.
845850
/// ...potrzebne do pozycjonowania tekstu
846851
ssh_natural char_height(char znak)
847852
{
@@ -850,7 +855,7 @@ ssh_natural char_height(char znak)
850855
return GrFontHi;
851856
}
852857

853-
/// Aktualne rozmiary znaku - szerokość.
858+
/// Aktualne rozmiary znaku szerokość.
854859
/// ...potrzebne do pozycjonowania tekstu
855860
ssh_natural char_width(char znak)
856861
{
@@ -859,7 +864,7 @@ ssh_natural char_width(char znak)
859864
return GrFontWi;
860865
}
861866

862-
/// Aktualne rozmiary wyświetlania całego łańcucha znaków - wysokość.
867+
/// Aktualne rozmiary wyświetlania całego łańcucha znaków wysokość.
863868
/// Tu zazwyczaj może być to samo co char_height.
864869
ssh_natural string_height(const char* str)
865870
{
@@ -868,7 +873,7 @@ ssh_natural string_height(const char* str)
868873
return GrFontHi;
869874
}
870875

871-
/// Aktualne rozmiary wyświetlania całego łańcucha znaków - szerokość.
876+
/// Aktualne rozmiary wyświetlania całego łańcucha znaków szerokość.
872877
/// W najgorszym razie odpowiednia wielokrotność char_width
873878
/// ...potrzebne do jego pozycjonowania */
874879
ssh_natural string_width(const char* str)
@@ -992,7 +997,7 @@ void print_d(ssh_coordinate x,ssh_coordinate y,const char* format,...)
992997
char target[2048];
993998
va_list marker;
994999
va_start(marker, format); /* Initialize variable arguments. */
995-
vsprintf(target, format, marker); assert(strlen(target) < 2046);
1000+
vsprintf(target, format, marker); assert(strlen(target) < 2046);
9961001
va_end(marker); /* Reset variable arguments. */
9971002
//Op.text.txt.take(clone_str(target));
9981003
//if(Op.text.txt != NULL)
@@ -1177,7 +1182,7 @@ void fill_flood_rgb(int x,int y,int rf,int gf,int bf,int rb,int gb,int bb)
11771182

11781183
/* RYSOWANIE */
11791184

1180-
/// \brief Wyświetlenie linii w aktualnym kolorze domyślnym - także RGB.
1185+
/// \brief Wyświetlenie linii w aktualnym kolorze domyślnym także RGB.
11811186
/// \param x1 : pozioma współrzędna startowa
11821187
/// \param y1 : pionowa współrzędna startowa
11831188
/// \param x2 : pozioma współrzędna końcowa
@@ -1331,7 +1336,7 @@ void circle(ssh_coordinate x,ssh_coordinate y,ssh_natural r,ssh_color c)
13311336
Op.circle.ry = r;
13321337
}
13331338

1334-
/// Wyświetlenie koła w kolorach domyślnych (pen & fill - także rgb).
1339+
/// Wyświetlenie koła w kolorach domyślnych (pen & fill także rgb).
13351340
/// \param x
13361341
/// \param y
13371342
/// \param r : promień okręgu
@@ -1754,7 +1759,7 @@ elastyczny byłby "named pipe" o nazwie zależnej od PID
17541759
i nazwy pliku wykonywalnego
17551760
**/
17561761

1757-
/// \brief Funkcja sprawdza czy jest do odczytania jakieś zdarzenie wejściowe
1762+
/// \brief Funkcja sprawdza, czy jest do odczytania jakieś zdarzenie wejściowe
17581763
/// \return SSH_YES or SSH_NO
17591764
ssh_mode input_ready()
17601765
{
@@ -1768,7 +1773,7 @@ ssh_mode input_ready()
17681773
/// Funkcja odczytywania znaków sterowania i zdarzeń.
17691774
/// \return znak, jak nie ma czego zwrócić to zwraca neutralne 0.
17701775
/// \details
1771-
/// W module SVG nigdy nie staje na tej funkcji, jak przy zwykłym oknie
1776+
/// W tym module SVG nigdy nie staje na tej funkcji jak przy zwykłym oknie
17721777
ssh_msg get_char()
17731778
{
17741779
if(ssh_trace_level>2) cout <<"SVG: " << _FUNCTION_NAME_ << SEP << GrCharMessage << endl;//get_char
@@ -1780,12 +1785,12 @@ ssh_msg get_char()
17801785
}
17811786
else
17821787
return 0;//Nigdy nie staje na tej funkcji, jak przy zwykłym oknie
1783-
//return -1;//-1 oznacza koniec wejścia - np. kliknięcie w "zamykacz okna" - co się tu normalnie nie zdarza
1788+
//return -1;//-1 oznacza koniec wejścia np. kliknięcie w "zamykacz okna" - co się tu normalnie nie zdarza
17841789
}
17851790

17861791
/// Odesłanie znaku na wejście
17871792
/// \param c : znak
1788-
/// \return Zwraca 0 jeśli nie ma miejsca
1793+
/// \return Zwraca 0, jeśli nie ma miejsca
17891794
/// \details Pewne jest tylko odesłanie jednego znaku
17901795
ssh_stat set_char(ssh_msg c)
17911796
{
@@ -2101,15 +2106,15 @@ static int _writeSVG(ostream& o)
21012106
//o << "<line x1 =\"0\" y1=\"0\" x2=\"100\" y2=\"50\" stroke=\"blue\" stroke-width=\"6\" />" << endl;
21022107
o << "<line x1=\"" << pr.x1 << "px\" y1=\"" << pr.y1 << "px\" x2=\"" << pr.x2 << "px\" y2=\"" << pr.y2 << "px\" ";
21032108
if(pr.wi>0) o << "stroke-width=\"" << pr.wi << "px\" ";
2104-
o << "stroke=\"rgb(" << pr.r << ',' << pr.g << ',' << pr.b << ")\" ";//COLOR
2109+
o << "stroke=\"rgb(" << pr.r << ',' << pr.g << ',' << pr.b << ")\" "; //COLOR
21052110
//<< "; 0x" << hex << pr.mode << dec << "; ";
21062111
o << "/>" << endl;
21072112
}; break;
21082113
case GrType::Circle: {
21092114
struct Circle &pr = (GrList[i].circle);
21102115
//o << "<circle cx=\"120\" cy=\"120\" r=\"80\" fill=\"red\" stroke=\"black\" stroke-width=\"5\" />" << endl;
21112116
//o << "<ellipse cx=\"200\" cy=\"200\" rx=\"20\" ry=\"7\" fill=\"none\" stroke=\"black\" stroke-width=\"6\" />" << endl;
2112-
if (pr.rx == pr.ry)//Koło - circle
2117+
if (pr.rx == pr.ry) //Koło circle
21132118
o << "<circle r=\"" << pr.ry << "px\" ";
21142119
else
21152120
o << "<ellipse rx=" << pr.rx << "px\" ry=\"" << pr.ry << "px\" ";
@@ -2149,10 +2154,10 @@ static int _writeSVG(ostream& o)
21492154
struct Text& pr = (GrList[i].text); //assert(pr.txt != NULL);
21502155
//cerr << '\t' << i << '\t' << pr.type << ' ' << pr.x << ' ' << pr.y;
21512156
//cerr << ' ' << (pr.txt?pr.txt:"NULL") << endl;
2152-
if (pr.txt == NULL) // TO SIĘ NIE POWINNO ZDAŻAĆ ALE JEDNAK SIĘ ZDAŻAŁO!!!
2157+
if (pr.txt == nullptr) // TO SIĘ NIE POWINNO ZDAŻAĆ ALE JEDNAK SIĘ ZDAŻAŁO!!!
21532158
{
21542159
cerr << '\t' << i << '\t' << pr.type << ' ' << pr.x << ' ' << pr.y << " NULL" << endl;
2155-
pr.txt = clone_str("@?@-NULL-@?@"); assert(pr.txt != NULL);
2160+
pr.txt = clone_str("@?@-NULL-@?@"); assert(pr.txt != nullptr);
21562161
//exit(-1);
21572162
}
21582163

@@ -2210,7 +2215,7 @@ void flush_plot()
22102215
{
22112216
if(GrClosed)
22122217
{
2213-
cerr<<"SYMSHELL graphics not initialised"<<endl;
2218+
cerr<<"SYMSHELL graphic is not initialized"<<endl;
22142219
return;
22152220
}
22162221

@@ -2274,7 +2279,7 @@ ssh_stat dump_screen(const char* Filename)
22742279
}
22752280

22762281
/* *******************************************************************/
2277-
/* SYMSHELLLIGHT version 2023-03-14 */
2282+
/* SYMSHELLLIGHT version 2026-01-o5 */
22782283
/* *******************************************************************/
22792284
/* THIS CODE IS DESIGNED & COPYRIGHT BY: */
22802285
/* W O J C I E C H B O R K O W S K I */

asserted.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/// @file
22
/// Created by borkowsk on 06.01.26.
3-
/// @date 2026 (last modification)
3+
/// @date 2026-01-06 (last modification)
44

55
#ifndef SYMSHELL_ASSERTED_H
66
#define SYMSHELL_ASSERTED_H

symshell.h

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44
* \details
55
* Whole file changed massively: 15.11.2020
66
* Comments changed massively: 3-4.01.2022
7-
* \author borkowsk - W.Borkowski from University of Warsaw
7+
*
88
* \note
99
* - https://www.researchgate.net/profile/WOJCIECH_BORKOWSKI
1010
* - https://github.com/borkowsk
11-
* \n :atom_symbol:
11+
*
12+
** \author Designed by W.Borkowski from University of Warsaw
13+
**
14+
** \library SYMSHELLLIGHT version 2026a
15+
**
16+
* @date 2026-01-06 (last modification)
1217
*/
1318

1419
#ifndef _SYMSHELL_H_
@@ -118,24 +123,25 @@ extern int WB_error_enter_before_clean/* =0 */;
118123
/* OPERACJE DOTYCZĄCE CAŁEGO OKNA GRAFICZNEGO */
119124
/* ****************************************** */
120125

121-
/** \brief Wymuszenie oczekiwania przez pewną liczbę milli seconds */
126+
/** \brief Wymuszenie oczekiwania przez pewną liczbę "milli-seconds" */
122127
void delay_ms(ssh_natural ms);
123128

124-
/** \brief Wymuszenie oczekiwania przez pewną liczbę micro seconds */
129+
/** \brief Wymuszenie oczekiwania przez pewną liczbę "micro-seconds" */
125130
void delay_us(ssh_natural us);
126131

127-
/** \brief Ostateczne uzgodnienie zawartości ekranu z zawartością pamięci */
132+
/** \brief Ostateczne uzgodnienie zawartości ekranu z poprzednio zleconymi akcjami.
133+
* \note Przy działaniu X11 przez sieć gwarantuje wysyłkę, może przelać ekran wirtualny na aktualny itp. */
128134
void flush_plot();
129135

130-
/** \brief Czyści ekran lub ekran wirtualny */
136+
/** \brief Bezwzględnie czyści ekran/okno lub ekran wirtualny. Może być czasochłonne. */
131137
void clear_screen();
132138

133139
/** \brief W sposób ukryty zapomina poprzednią zawartość ekranu.
134-
* gdy liczymy, że i tak zostałaby zamazana.
140+
* \note Używany, gdy liczymy, że i tak zawartość zostałaby zamazana, a taka akcja jest tania (zwłaszcza gdy moduł wektorowy).
135141
* \return Zwraca 1, jeśli zadziałał poprawnie */
136142
ssh_stat invalidate_screen();
137143

138-
/** \brief Zapisuje zawartość ekranu do pliku graficznego w naturalnym formacie platformy: BMP, XBM itp.
144+
/** \brief Zapisuje zawartość ekranu do pliku graficznego w naturalnym formacie platformy: BMP, XBM, SVG itp.
139145
* Może nie działać w trybie bez buforowania okna/ekranu. \return Zwraca 1, jeśli zadziałał poprawnie */
140146
ssh_stat dump_screen(const char* Filename);
141147

@@ -166,7 +172,7 @@ void set_pen_rgb(ssh_intensity r, /**< składowa re
166172
ssh_intensity g, /**< składowa green */
167173
ssh_intensity b, /**< składowa blue */
168174
ssh_natural width, /**< grubość linii */
169-
ssh_mode style /**< styl rysowania linii jak w \see line_style */
175+
ssh_mode style /**< styl rysowania linii jak w `line_style` */
170176
);
171177

172178
/** \brief Ustala aktualny kolor i przeźroczystość linii za pomocą składowych RGBA oraz styl i grubość */
@@ -175,7 +181,7 @@ void set_pen_rgba(ssh_intensity r, /**< składowa re
175181
ssh_intensity b, /**< składowa blue */
176182
ssh_intensity a, /**< kanał alfa */
177183
ssh_natural width, /**< grubość linii */
178-
ssh_mode style /**< styl rysowania linii jak w \see line_style */
184+
ssh_mode style /**< styl rysowania linii jak w `line_style` */
179185
);
180186

181187
/** \brief Ustala aktualny kolor wypełnień za pomocą składowych RGB */
@@ -196,7 +202,7 @@ void set_brush_rgba(ssh_intensity r, /**< składowa r
196202
/** \brief Sprawdza buforowanie. \return Zwraca 1, jeśli buforowane */
197203
ssh_mode buffered();
198204

199-
/** \brief Sprawdza czy okno ma zafiksowana wielkość? \return Zwraca 1, jeśli TAK */
205+
/** \brief Sprawdza, czy okno ma zafiksowana wielkość? \return Zwraca 1, jeśli TAK */
200206
ssh_mode fixed();
201207

202208
/** \brief Jakie są ustawienia RGB konkretnego kolorku w palecie */
@@ -230,11 +236,11 @@ ssh_natural char_width(char znak); /**< Szerokość
230236
ssh_natural string_height(const char* str); /**< Wysokość łańcucha tekstowego na ekranie */
231237
ssh_natural string_width(const char* str); /**< Szerokość łańcucha tekstowego na ekranie */
232238

233-
/** \brief od zadanych koordynatów. Po za tym działa jak zwykłe \see printf */
239+
/** \brief Rysuje napis od zadanych koordynatów graficznych. Poza tym działa jak zwykłe `printf` */
234240
/** \details Domyślna wersja daje tekst w oknie czarno na białym */
235241
void printbw(ssh_coordinate x,ssh_coordinate y,const char* format,...);
236242

237-
/** \brief Wyprowadzanie tekstu w oknie w kolorystyce domyślnej */
243+
/** \brief Rysuje napis w oknie w kolorystyce domyślnej */
238244
void print_d(ssh_coordinate x,ssh_coordinate y,const char* format,...);
239245

240246
/** \brief Wyprowadzanie tekstu na ekran/okno od zadanych koordynatów w zadanych kolorach */
@@ -516,11 +522,11 @@ void fill_poly(ssh_coordinate vx, /**< poziom
516522
ssh_mode input_ready(); /**< \brief Funkcja sprawdzająca, czy jest coś do wzięcia z wejścia */
517523

518524
ssh_msg get_char(); /**< \brief Funkcja odczytywania znaków sterowania i zdarzeń
519-
* \return indeks znaku z klawiatury lub znak specjalny:
520-
* '/r' : Wymagane odrysowanie co najmniej fragmentu ekranu
521-
* '/b' : Jest zdarzenie myszy do przetworzenia
522-
* EOF : Zamknięto okno graficzne
523-
* /n Albo liczbę reprezentującą komendę z menu (zazwyczaj dużą)
525+
* \return indeks znaku z klawiatury, znak specjalny lub kod z menu.
526+
* '/r' : Wymagane odrysowanie co najmniej fragmentu ekranu.
527+
* '/b' : Jest zdarzenie myszy do przetworzenia.
528+
* EOF : Zamknięto okno graficzne.
529+
* NNN : Liczba reprezentującą komendę z menu (zazwyczaj duża).
524530
* */
525531

526532
ssh_stat set_char(ssh_msg ch); /**< \brief Odesłanie znaku na wejście. \return Zwraca 0, jeśli nie ma miejsca

0 commit comments

Comments
 (0)