# include " rang.hpp "
using namespace std ;
using namespace rang ;
int main ()
{
cout << " Plain old text "
<< style:: bold << " Rang styled text!! "
<< style::reset << endl;
}
يعتمد النطاق فقط على مكتبة C++ القياسية، ورأس النظام unistd.h
على رؤوس نظام Unix و windows.h
& io.h
على الأنظمة المستندة إلى Windows. بمعنى آخر، لا تحتاج إلى أي تبعيات لطرف ثالث.
rang هي مكتبة ذات رأس واحد فقط. ضع rang.hpp
في مجلد التضمين مباشرة في شجرة مصدر المشروع أو في مكان يمكن الوصول إليه من مشروعك.
أو، إذا كنت تستخدم مدير الحزم conan، فاتبع الخطوات التالية:
أضف مرجعًا للنطاق إلى قسم المتطلبات في ملف conanfile.txt
الخاص بمشروعك:
[requires]
rang/3.1.0@rang/stable
قم بتشغيل أمر تثبيت كونان:
conan install
يستخدم Rang كائنات iostream - cout
/ clog
/ cerr
لتطبيق السمات على النص الناتج. نظرًا لأن rang يهدف إلى دعم كل من الأنظمة المشابهة لنظام التشغيل Windows وUnix، فهو يهتم بالتفاصيل المحددة لنظام التشغيل ويحاول توفير واجهة موحدة. نظرًا لعدم التوافق بين إصدارات نظام التشغيل المختلفة، لا يتم دعم جميع أنواع السمات على كل نظام، لذا سيحاول رانج تخطي السمات التي قد تنتج بيانات غير مرغوب فيها (بدلاً من دفع رموز هروب ANSI العشوائية على التدفقات الخاصة بك). تتم أيضًا معالجة اكتشاف tty داخليًا، لذلك لا تحتاج إلى التحقق مما إذا كان مستخدم التطبيق قد يعيد توجيه الإخراج إلى ملف.
هل تحتاج إلى دعم للمحطات غير ansi؟ تحقق من Termdb الذي يدعم جميع المحطات الطرفية وقدراتها تقريبًا.
وبصرف النظر عن تعيين سمات النص، يمكنك أيضًا أن تطلب من النطاق تجاوز سلوكه الافتراضي من خلال هذه الطرق -
void rang::setControlMode (rang::control);
حيث rang::control
control::Auto
- يكتشف تلقائيًا ما إذا كانت الوحدة الطرفية تدعم اللون أم لا ( افتراضي )control::Off
- إيقاف تشغيل الألوان بالكاملcontrol::Force
- فرض الألوان حتى إذا كانت الوحدة الطرفية لا تدعمها أو تتم إعادة توجيه الإخراج إلى غير المحطة الطرفية void rang::setWinTermMode (rang::winTerm);
حيث rang::winTerm
يأخذ
winTerm::Auto
- يتحقق من وجود نوافذ أحدث ويختار Ansi وإلا فسيعود إلى Native ( افتراضي )winTerm::Native
- هذه الطريقة مدعومة في كافة إصدارات Windows ولكنها تدعم سمات أقلwinTerm::Ansi
- هذه الطريقة مدعومة في الإصدارات الأحدث من Windows وتدعم مجموعة غنية من السماتالسمات المدعومة مع توافقها مدرجة أدناه -
أنماط النص :
شفرة | لينكس/وين/أخرى | فوز قديم |
---|---|---|
rang::style::bold | نعم | نعم |
rang::style::dim | نعم | لا |
rang::style::italic | نعم | لا |
rang::style::underline | نعم | لا |
rang::style::blink | لا | لا |
rang::style::rblink | لا | لا |
rang::style::reversed | نعم | نعم |
rang::style::conceal | ربما | نعم |
rang::style::crossed | نعم | لا |
لون النص :
شفرة | لينكس/وين/أخرى | فوز قديم |
---|---|---|
rang::fg::black | نعم | نعم |
rang::fg::red | نعم | نعم |
rang::fg::green | نعم | نعم |
rang::fg::yellow | نعم | نعم |
rang::fg::blue | نعم | نعم |
rang::fg::magenta | نعم | نعم |
rang::fg::cyan | نعم | نعم |
rang::fg::gray | نعم | نعم |
لون الخلفية :
شفرة | لينكس/وين/أخرى | فوز قديم |
---|---|---|
rang::bg::black | نعم | نعم |
rang::bg::red | نعم | نعم |
rang::bg::green | نعم | نعم |
rang::bg::yellow | نعم | نعم |
rang::bg::blue | نعم | نعم |
rang::bg::magenta | نعم | نعم |
rang::bg::cyan | نعم | نعم |
rang::bg::gray | نعم | نعم |
لون المقدمة مشرق :
شفرة | لينكس/وين/أخرى | فوز قديم |
---|---|---|
rang::fgB::black | نعم | نعم |
rang::fgB::red | نعم | نعم |
rang::fgB::green | نعم | نعم |
rang::fgB::yellow | نعم | نعم |
rang::fgB::blue | نعم | نعم |
rang::fgB::magenta | نعم | نعم |
rang::fgB::cyan | نعم | نعم |
rang::fgB::gray | نعم | نعم |
لون الخلفية مشرق :
شفرة | لينكس/وين/أخرى | فوز قديم |
---|---|---|
rang::bgB::black | نعم | نعم |
rang::bgB::red | نعم | نعم |
rang::bgB::green | نعم | نعم |
rang::bgB::yellow | نعم | نعم |
rang::bgB::blue | نعم | نعم |
rang::bgB::magenta | نعم | نعم |
rang::bgB::cyan | نعم | نعم |
rang::bgB::gray | نعم | نعم |
إعادة ضبط الأنماط/الألوان :
شفرة | لينكس/وين/أخرى | فوز قديم |
---|---|---|
rang::style::reset | نعم | نعم |
rang::fg::reset | نعم | نعم |
rang::bg::reset | نعم | نعم |
تحقق من قيمة TERM
لمتغير env الخاص بك. ثم افتح مشكلة هنا وتأكد من ذكر قيمة TERM
مع اسم المحطة الطرفية الخاصة بك.
cout
/ cerr
/ clog
rdbuf؟ لا يتدخل Rang إذا حاولت إعادة توجيه cout
/ cerr
/ clog
إلى مكان آخر ويترك القرار لمستخدم المكتبة. تأكد من قراءة هذه المحادثة وتحقق من رمز المثال هنا.