⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inputbox_zz.cpp

📁 需要clanlib 库 这个改进版的 在linux 很好玩 但是一定要有clanlib
💻 CPP
字号:
#include <ClanLib/core.h>#include <ClanLib/display.h>#include "stylemanager_zz.h"#include "inputbox_zz.h"#pragma warning ( push, 1 )#pragma warning ( disable: 4244 ) // conversion from 'int' to 'float', possible loss of dataCL_InputBox_ZZ::CL_InputBox_ZZ(	CL_InputBox *inputbox,	CL_StyleManager_ZZ *style):       CL_ComponentStyle(inputbox),	CL_InputBox_StyleBase(inputbox, style->get_resources(), "InputBox/font", 3),    first_paint(false){	//this->style = style;	//resources = style->get_resources();	slots.connect(inputbox->sig_paint(), this, &CL_InputBox_ZZ::on_paint);}CL_InputBox_ZZ::~CL_InputBox_ZZ(){}void CL_InputBox_ZZ::on_paint(){    on_paint_default();}void CL_InputBox_ZZ::on_changed(){    // TODO: }void CL_InputBox_ZZ::on_paint_default(){    // Fill    //-------    CL_Color const clr_background(0, 40, 0, 60);    CL_Rect const rc_main(inputbox->get_screen_rect());	CL_StyleManager_ZZ::fill_rounded_rect(rc_main, clr_background);    // Outline    CL_Color const clr_outline(175, 205, 148);	CL_StyleManager_ZZ::draw_rounded_rect(rc_main, clr_outline);	on_paint_input();}void CL_InputBox_ZZ::on_paint_input(){    // That code is from NetObject, with small    // correction to width_offset for font	// For easy reference, put inputfield-text into local variable	std::string const & text = inputbox->get_text();	int width = inputbox->get_width();	int pixel_y_offset = 4;    int const font_width_offset = font->get_width_offset();    font->set_width_offset(0);	// Calculate scroll offset	int drawing_text_width = 0;	int draw_to = draw_from;	const int BORDER_SIZE = 6;	while (draw_to < text.length())	{		int w = get_chars_width( draw_to, draw_to );		if (drawing_text_width + w > width - BORDER_SIZE * 2)			break;		drawing_text_width += w;		draw_to ++;	}	// Display marked text, if any	if (inputbox->has_marked_text())	{		int start = inputbox->get_selection_start();		int end = start + inputbox->get_selection_length();		if (start < draw_from) start = draw_from;		if (end   > draw_to  ) end   = draw_to;		int mark_x1 = get_chars_width( draw_from, start-1 );		int mark_x2 = get_chars_width( draw_from, end-1 );		CL_Display::fill_rect(			CL_Rect(inputbox->get_screen_x() + BORDER_SIZE + mark_x1 - 1,					inputbox->get_screen_y() + pixel_y_offset,					inputbox->get_screen_x() + BORDER_SIZE + mark_x2,					inputbox->get_screen_y() + pixel_y_offset + font->get_height() + 1),			CL_Color(150, 180, 150, static_cast<unsigned int>(0.5f * 255)));	}	// Display text	int draw_count = draw_to - draw_from;	if (draw_from >= 0 && draw_count > 0)	{		font->draw(inputbox->get_screen_x() + BORDER_SIZE,			inputbox->get_screen_y() + pixel_y_offset, text.substr( draw_from, draw_count ));	}	// Show blinking cursor	if(inputbox->has_focus()) 	{		if (show_cursor)		{			int cursor_pos = inputbox->get_cursor_position();			int cursor_x = border_size + get_chars_width( draw_from, cursor_pos - 1 );							//style->            CL_Display::draw_line(				inputbox->get_screen_x() + cursor_x,				inputbox->get_screen_y() + pixel_y_offset,				inputbox->get_screen_x() + cursor_x,				inputbox->get_screen_y() + pixel_y_offset + font->get_height() + 1,                CL_Color::whitesmoke);		}		unsigned int cur_time = CL_System::get_time();		if (cur_time >= cursor_blink_time)		{			cursor_blink_time = cur_time + 400;			show_cursor = !show_cursor;		}	}    font->set_width_offset(font_width_offset);}#pragma warning ( pop )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -