Esempio n. 1
0
void Painter::text(ITool &font, ITool &pen, ITool &brush, ssi_point_t position, const ssi_char_t *text, TEXT_ALIGN_HORZ::List align_horz, TEXT_ALIGN_VERT::List align_vert) {

	::SetTextColor((HDC)_device, pen.getColor());
	::SetBkMode((HDC)_device, OPAQUE);
	::SetBkColor((HDC)_device, brush.getColor());
	::SelectObject((HDC)_device, font.getHandle());

	unsigned int align = 0;
	switch (align_horz) {
	case TEXT_ALIGN_HORZ::LEFT:
		align |= TA_LEFT;
		break;
	case TEXT_ALIGN_HORZ::RIGHT:
		align |= TA_RIGHT;
		break;
	case TEXT_ALIGN_HORZ::CENTER:
		align |= TA_CENTER;
		break;
	}
	switch (align_vert) {
	case TEXT_ALIGN_VERT::BOTTOM:
		align |= TA_BOTTOM;
		break;
	case TEXT_ALIGN_VERT::TOP:
		align |= TA_TOP;
		break;
	case TEXT_ALIGN_VERT::CENTER:
		align |= TA_BASELINE;
		break;
	}

	::SetTextAlign((HDC) _device, align);
	::TextOut((HDC)_device, _area.left + position.x, _area.top + position.y, text, ssi_strlen (text));
}
Esempio n. 2
0
ssi_size_t Evaluation::cutString(const ssi_char_t *str, ssi_size_t n_cut_max, ssi_char_t *cut) {

	if (n_cut_max == 0 || !cut) {
		return 0;
	}

	if (!str || str[0] == '\0') {
		cut[0] = '\0';
		return 0;
	}

	ssi_size_t n_str = ssi_strlen(str);
	if (n_cut_max > n_str) {
		ssi_strcpy(cut, str);
		return n_str;
	}

	ssi_size_t n_front = (n_cut_max-1) / 2;
	ssi_size_t n_back = (n_cut_max - 1) - n_front;
	for (ssi_size_t i = 0; i < n_front; i++) {
		cut[i] = str[i];
	}
	for (ssi_size_t i = 0; i < n_back; i++) {
		cut[n_cut_max-2-i] = str[n_str-1-i];
	}
	cut[n_cut_max-1] = '\0';

	return n_cut_max-1;
}
Esempio n. 3
0
void Window::setTitle(const ssi_char_t *title) {

	Thread::setName(title);
	ssi_strcpy(_title, title);

	if (_hWnd) {
		::SendMessage((HWND)_hWnd, WM_SETTEXT, ssi_strlen(title) + 1, (LPARAM)title);
	}
}
Esempio n. 4
0
void SocketEventReader::message (const char *from,
	const ssi_char_t *id,
	osc_int32 time,
	osc_int32 dur,
	const ssi_char_t *msg) {
	
	if (_elistener) {
		_event_string.time = _frame->GetElapsedTimeMs ();
		_event_string.dur = dur;
		ssi_event_adjust (_event_string, ssi_strlen (msg) + 1);
		strcpy (_event_string.ptr, msg);
		_elistener->update (_event_string);
	}
}
Esempio n. 5
0
void SocketEventReader::run () {

	int result = 0;
	
	if (_options.osc) {
		result = _socket_osc->recv (this, _options.timeout); 
	} else {
		result = _socket->recv (_buffer, _options.size, _options.timeout); 
		if (result > 0) {
			// send event
			if (_elistener) {
				_event_string.time = _frame->GetElapsedTimeMs ();
				_event_string.dur = 0;
				ssi_event_adjust (_event_string, ssi_strlen (_buffer) + 1);
				strcpy (_event_string.ptr, _buffer);
				_elistener->update (_event_string);
			}	
		}
	}

	SSI_DBG (SSI_LOG_LEVEL_DEBUG, "received %d bytes", result);
};
Esempio n. 6
0
bool ClockEventSender::setEventListener (IEventListener *listener) {

	if (_options.empty) {
		ssi_event_init(_event, SSI_ETYPE_EMPTY);
	}
	else {
		ssi_event_init(_event, SSI_ETYPE_STRING);
		ssi_event_adjust(_event, ssi_strlen(_options.string) + 1);
		ssi_strcpy(_event.ptr, _options.string);
	}

	_listener = listener;
	
	if (_options.address[0] != '\0') {

		SSI_OPTIONLIST_SET_ADDRESS(_options.address, _event_address, _event);

	}
	else {

		ssi_wrn("use of deprecated option 'sname' and 'ename', use 'address' instead")

		_event.sender_id = Factory::AddString(_options.sname);
		if (_event.sender_id == SSI_FACTORY_STRINGS_INVALID_ID) {
			return false;
		}
		_event.event_id = Factory::AddString(_options.ename);
		if (_event.event_id == SSI_FACTORY_STRINGS_INVALID_ID) {
			return false;
		}

		_event_address.setSender(_options.sname);
		_event_address.setEvents(_options.ename);
	}

	return true;
}