Combo Box LAF help
-
I'd like my little drop down triangle to be a little lower and in line with the text, but can't figure out how to do it. The LAF stuff still spins me out when dealing with obj.area
HiseSnippet 1063.3ocsVs2aaaCDmxIpn16AZA1G.B+GE1XNZxIocCKXnw1wtvXNoF0YECHHnfVhxhyzjFRzNwnn.6i79FrcTTxORLTbMvT.ny8h2u63w6X+HoGMNVFgrJd8hoTj02ZOXgPE1JjvDntWfr9d6KIwJZD1vp4hoj3XpOxx5f2oYXU7PTx2+71lDNQ3QWwBg9nj4Q6wlvTq31+7emw4cH9zqYSVS6SOuqmTzRxky.7bfsKZJwaLYD8JhVsB1Hqm01mojQCTDEMFzoozewfP4cBi9ejEyFxoZh5nAvFYXiZEx398yh0XDx5v9qh7CLQ9OXeIymsj+pLvKRDfWYw54.qB4Ao5eEPxZMHcnARuzdfWDapZkDMd9F6tB3.If.o50ghQWTgirsaIAMDJmIjwzNQ.wRKp7FW2ZXXo5YkJAo6XEdNIByIA3eC2VLhInNdQTHXdGWNjvMaZOobbCgeGJkWYSCaImLT1Tdecv7LuNhp.1SkBfnR4kZT9AV1rWiNqYkwq8jdD9CcWhpNQzQLckXmYBOESJpT1OhbW11WtFNHSvnZX4v+pZI7V997V4Z9zvh.PBL1g.v4rbzMGQibh0Y.ccbE8VwTzIFx5UOKW6BfKFePNS3S8+.0SQDi3zJjZ3i0YgcyglehctioBavmFRRffhdepB0vILnBBTV5ie0qLQKj3lSqheKttiK9W0qUy2mr.yFEJmSiptADbuuSm1mn+aGfcGotHo2LOlOQWKDK4T3rr9INtU267utvnAmMRP8uFh7kofZ3aH23dK9Gw0gaAjapeqd83aOxPdxs.cYNMPUNWe+T.XWyM4WIFBUhZL8D4PcMy0QLSsRV3oCJ7Q3ve5TXMKVA9.iZvxI5kWCA6kDUnS+t6al9KI2NytfqCyGc+M4ta0yxtahkhqjJ56EUpV5ykJV5KkvOTTPvVko6SDI4bZzVEqmkDkmgUDylLjB0+yI7YzkJBMa2rC9y1sN3dl1VqonTzUvTueJMktij6q6Lq++G2uGk12S24OEgfppj99uHsueVlEw70s8WlnQIgv5idQ+Q2KHJR1lA6K3qozHESGRVWPmCygMCUJZeAMdrRNMQ2z1zHK6cz02uzs+83yWrBC9mqayAN641gTNWVBFz+nAZvnTo+LNQs47U8CIRE.GYaLTSO3RDyTKVOZ+JF55l6P2cEhuztOS4EtcLVXKXDNH9+.ioOU46raGD.yGVAvCs67m666RdB2CyiTLwHnSQDCN7suZ1jAPmLOJ3cgfxgM21pftf1P6po0YfATgeBw+BeoBqqosREVOSHZBwKR9IOy0.8igddBG.Shj29UDdDJPiWV4aa653hl.uK6Sdd5v+H3N11s438vlS1CaNcOr406gMuYOr4m2Ca9kbsQ+j3FyTxIlqC.i9sS5.YY017zBcUH5+.gUCM4.
-
@DanH Simply, change the y coordinate (a[1]) value of the triangle area :
HiseSnippet 1067.3ocsV8+aZaDE+LDOUXeQsR6OfS7CUPGgXBIcSCE0.DnBMRJpjUMonnpC6C7MNtCYePBZpR6O48eP267YaLIzpNzpszY899m6cu687v.oKMLTFfrJb85ETj02YOZsP42wmvDn9Wfr9A6KIgJZ.1vp85EjvPpGxxJ+q0LrJb.J54edUaBmHboaXgPuSxboCXyYpMbGd9uw37dDO50r4Yz9jy66JEcjb4R.O4scPKHtyHSoWQzpkyFY8Mc8XJYvHEQQCQVGzV5sdju7NgQ+2wBYi4TMQczHvQF18jbOMh0bQc7YbugI66PD3kgaxB4MYgez9RlGKk+lrwSiDf2XQ17gUtsgW9sfW8rvyIC71Ajrx.oCLP5Y1ibCXKTajnwy2Z2W.GNSHPZOKTL5hx8w71cjfFBUs4jYzdA.QpEkeoiSULrToYwhPpOTgWQBvbxD7Y3thoLAsla.E1LulKGS3FmNPJm0R30iR4k21vNx4iksk2WGLOIpSoJf8Bo.HJWJUiROvx1CZ0KiUlnNP5R3OLbQpVKfNkoqJ6sT3pXRQ4RdAj6Rbeop3IIBlVEKG+mUJ9WEwQO5vQfPALqQfvzLle7mo0B0HVWCVVqBSQmaHqWoYpNSfB32JWJfxp2RcUDwTNsLoJ93L5rwOlOg0tio7awW3Sh7rhderBUwQLnBBTc3ge9yMfCv+JZE7qv0q4f+U8ZkT2ylXrwWthFTYqn4beudcane2FL8j5SfAKcYdDchNTxoPhpdiZNUdTRPmMawYSETuqAblB3p3aH23bK9mv0gRGxM0uUud7sGZHabKPWhSmnJk5yrN9+Fr0GU9vQk1uam6uNfYx4InQiA7gX+iNAVSfFv+3W3ezoUA9MzKmBn6Rhxu1v9UZhO5HiX7YmgOF97Br+1ogODUukTxpw5ipHipFqzLoZCKEWIUz2HJqK3JT7CEwOTzjI6TltxOPx4zfcJV2oL3yYXYwx4ioPozJBeIMUQn8w18jr+z8jx1xz0bQLihRQeAS8lETwmpQJJ91qt+ULp.UUQcudZb2qjrIh4oadklbQQvN6vDzu2+Bhhj3LvuPrVPCTL81v5B5JXxho0XA6KngyTxEQ5F2rA1pegg99zv92yNe8FL3ct9xODrmX6S4bYQXz0iZKCCDjdK4D01SIziFiE.GSa0ZV29UDxTqyta+eazwWJDel8Plx0e2XL2NvHbP70.iwCb+d6tSl.cR2.vCr68GeclthfN2JlXJzIHfAG91Wsb9HnEjKEhtPP45qIV4zEzFZGMsNCLhJ7hH9H7DKrtl1JVX8Dgn4D2.46cMWCzizeRDG.Shn+lo.7aU.MNsx211olCZN72Eu20Uu8ODtisaaNdOrowdXyI6gMmtG17x8vledOr4W9r1n+wtVKUx4lqC.igci5.YY00LYVWEh9WHJLQTB
-
@Matt_SF thanks! Would never have got there
-
@DanH I've written some helper functions that mimic the
juce::Rectangle
class:This offers many helper functions to trim, reduce, slice, translate
[x, y, w, h]
arrays that represent rectangles in HiseScript (likeobj.area
). If you learn how they work (look at the JUCE docs for a description), almost every Rectangle operation becomes trivial.namespace Rect { inline function reduced(area, amount) { return [ area[0] + amount, area[1] + amount, area[2] - 2 * amount, area[3] - 2 * amount]; } inline function copy(area) { return [ area[0], area[1], area[2], area[3]]; } inline function contains(area, point) { return point[0] >= area[0] && point[0] < area[0] + area[2] && point[1] >= area[1] && point[1] < area[1] + area[3]; } inline function withSizeKeepingCentre(area, width, height) { return [ area[0] + (area[2] - width) / 2, area[1] + (area[3] - height) / 2, width, height]; } inline function removeFromLeft(area, amount) { area[0] += amount; area[2] -= amount; return [area[0] - amount, area[1], amount, area[3]]; } inline function removeFromRight(area, amount) { area[2] -= amount; return [area[0] + area[2], area[1], amount, area[3]]; } inline function removeFromTop(area, amount) { area[1] += amount; area[3] -= amount; return [area[0], area[1] - amount, area[2], amount]; } inline function scale(area, scaleFactor) { local newArea = []; newArea.reserve(4); for(a in area) newArea.push(a * scaleFactor); return newArea; } inline function removeFromBottom(area, amount) { area[3] -= amount; return [area[0], area[1] + area[3], area[2], amount]; } inline function translated(area, xDelta, yDelta) { return [area[0] + xDelta, area[1] + yDelta, area[2], area[3]]; } inline function withAspectRatioLike(area, otherArea) { local ar = otherArea[3] / otherArea[2]; local w = area[2]; local h = area[2] * ar; local x = area[0]; local y = area[1] + Math.abs(h - ar[3]) / 2.0; if(ar > 1.0) { w = area[3] / ar; h = area[3]; x = area[0] + Math.abs(w - ar[2]) / 2.0; y = area[1]; } return [x, y, w, h]; } }
-
@Christoph-Hart Thank you, yep I need to properly get my head around this stuff!