17 "title" :
"VuoTextFieldInternal",
18 "dependencies" : [
"VuoKeyboard",
"VuoClipboard" ],
71 screenBackingScaleFactor = 1;
75 validateCharInput = NULL;
76 validateTextInput = NULL;
110 position = newPosition;
134 if(state->
text != NULL)
175 validateCharInput = validateCharInputCallback;
184 validateTextInput = validateTextInputCallback;
196 bool foundTextLayer =
false;
199 for (
unsigned long i = 1; i <= childObjectCount && !foundTextLayer; ++i)
218 bool VuoTextFieldInternal::GetTextLocalPosition(
const VuoRenderedLayers* renderedLayers, uint64_t
id, VuoPoint2d point, VuoPoint2d* inverseTransformedPoint)
224 if( FindTextLayer(renderedLayers,
id, &textLayer, ancestors) )
253 uint32_t utf32_char = unicode[0];
260 (!(modifiers & VuoModifierKey_Option) && (
285 if(validateCharInput == NULL || utf32_char < 32 || validateCharInput(state->
text, utf32_char))
298 bool stateDidChange =
false;
300 if(renderedLayers == NULL)
301 return stateDidChange;
303 unsigned long int pixelsWide, pixelsHigh;
304 float backingScaleFactor;
306 && (screenSize.x != pixelsWide
307 || screenSize.y != pixelsHigh
308 || screenBackingScaleFactor != backingScaleFactor))
309 stateDidChange =
true;
311 screenSize.x = pixelsWide;
312 screenSize.y = pixelsHigh;
313 screenBackingScaleFactor = backingScaleFactor;
328 VuoPoint2d inverseTransformedPoint;
330 if(it.type == VuoInteractionType_Press || it.type == VuoInteractionType_Click)
334 if( state->
isFocused && GetTextLocalPosition(renderedLayers,
id, it.position, &inverseTransformedPoint) )
336 if( it.clickCount == 1 )
337 stb_textedit_click(&state->
text, &state->
textEditState, inverseTransformedPoint.x, inverseTransformedPoint.y);
338 else if( it.clickCount == 2 )
340 else if( it.clickCount == 3 )
343 stateDidChange =
true;
346 else if(state->
isFocused && it.type == VuoInteractionType_Drag)
348 if( GetTextLocalPosition(renderedLayers,
id, it.position, &inverseTransformedPoint) )
349 stateDidChange = stb_textedit_drag(&state->
text, &state->
textEditState, inverseTransformedPoint.x, inverseTransformedPoint.y);
358 stateDidChange =
true;
362 return stateDidChange;
368 void VuoTextFieldInternal::OnLostFocus()
370 if(validateTextInput != NULL)
374 if(validateTextInput(state->
text, &modifiedText))
378 if(modifiedText != NULL)
403 screenBackingScaleFactor,