Вверх ↑
Ответов: 2059
Рейтинг: 131
#1: 2020-07-27 14:13:47 ЛС | профиль | цитата
nesco писал(а):
Но IC выполнен не технично.

Ну наверное я специально не рисовал IC.
Сейчас по уши с мужиками в большом проекте.
Вижу, что никто не отвечает, вот первый попавшийся и подходящий IC и кинул.
Зато его можно изменять по своим хотелкам.

Add(MainForm,3167274,84,70)
{
Width=281
Height=309
Caption="ListBox Тест строки под курсором"
}
Add(ListBox,7681868,147,77)
{
Width=273
Height=281
Align=5
Font=[MS Sans Seriff,8,1,8388608,1]
Name="lista"
Hint=" "
HintManager=""
Strings=#28:vec3 apply_chart(vec3 image)|1:{|84: const vec3 scale = vec3(LUT_SIZE - 1.0, LUT_SIZE - 1.0, LUT_SIZE - 1.0) / LUT_SIZE;|50: const vec3 bias = vec3(0.5, 0.5, 0.0) / LUT_SIZE;|4: |53: vec3 lookup = clamp(image, 0.0, 1.0) * scale + bias;|1: |36: float slice = lookup.z * LUT_SIZE; |33: float sliceFrac = fract(slice); |36: float sliceIdx = slice - sliceFrac;|1: |45: lookup.x = (lookup.x + sliceIdx) / LUT_SIZE;|32: lookup.xy /= iResolution.xy;|43: lookup.xy *= vec2(LUT_WIDTH, LUT_SIZE);|4: |48: vec3 col0 = texture(iChannel1, lookup.xy).xyz;|4: |26: // slice interpolation|57: lookup.x += 1.0 / LUT_SIZE * LUT_WIDTH / iResolution.x;|48: vec3 col1 = texture(iChannel1, lookup.xy).xyz;|4: |41: return col0 + (col1 - col0) * sliceFrac;|1:}|0:|55:void mainImage( out vec4 fragColor, in vec2 fragCoord )|1:{|44: vec2 uv = fragCoord.xy / iResolution.xy;|40: vec4 image = texture(iChannel0, uv);|42: image.xyz = pow(image.xyz, vec3(2.2));|4: |31: if (fragCoord.x < iMouse.x)|13: { |30: // move to proxy space|59: image.xyz = ACES_2_ACESproxy(rgb_2_ap0(image.xyz));|0:|26: // apply the chart|43: image.xyz = apply_chart(image.xyz);|5: }|8: else|5: {|55: image.xyz = pow(image.xyz, vec3(1.0 / 2.2)); |5: }|3: |52: vec3 lookupTable = (texture(iChannel1, uv).xyz);|57: if(fragCoord.x < LUT_WIDTH && fragCoord.y < LUT_SIZE)|33: image.xyz = lookupTable.xyz;|4: |36: fragColor = vec4(image.xyz,1.0);|1:}|
DataType=1
Point(doHint)
Point(String)
Point(onKeyDown)
Point(onDblClick)
Point(Value)
Point(ValueArray)
Point(Index)
Point(onMouseDown)
Point(onMouseMove)
Point(doSelect)
Point(PHandle)
Point(MouseX)
Point(MouseY)
link(onMouseMove,1122117:doGetItemString,[(228,118)(228,195)(179,195)(179,160)])
}
Add(InlineCode,1122117,189,154)
{
WorkPoints=#15:doGetItemString|
EventPoints=#15:onGetItemString|
DataPoints=#14:ListBoxPHandle|1:X|1:Y|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,WIndows,Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: X,Y: THI_Event;|29: ListBoxPHandle: THI_Event;|30: onGetItemString: THI_Event;|57: procedure doGetItemString(var Data:TData; Index:word);|3: |5: end;|0:|14:implementation|0:|39: procedure THiAsmClass.doGetItemString;|7: var |20: LBCtrl: PControl;|12: R: TRect;|13: P: TPoint;|14: i: Integer;|6: begin|54: LBCtrl:= PControl(ToIntegerEvent(ListBoxPHandle));|53: P := MakePoint(ToIntegerEvent(X),ToIntegerEvent(Y));|74: for i := LBCtrl.Perform(LB_GETTOPINDEX,0,0) to LBCtrl.Count -1 do begin|53: LBCtrl.Perform(LB_GETITEMRECT, i , Integer(@R));|35: if PointInRect(P,R) then begin|52: _hi_OnEvent(onGetItemString,LBCtrl.Items[i]);|12: Exit;|9: end;|7: end;|35: _hi_OnEvent(onGetItemString,-1);|5: end;|4:end.|
link(onGetItemString,7681868:doHint,[(235,160)(235,202)(137,202)(137,125)])
link(ListBoxPHandle,7681868:PHandle,[])
link(X,7681868:MouseX,[])
link(Y,7681868:MouseY,[])
}

Чего тут рассусоливать - это не так, да это не эдак?
Какой это имеет с смысл?
карма: 6

0
Редактировалось 1 раз(а), последний 2020-07-27 14:16:59