diff options
author | 2024-07-12 09:39:47 +0000 | |
---|---|---|
committer | 2024-07-12 09:39:47 +0000 | |
commit | cde2fb6244a791b3c5b746112e3a8be3a79f39a4 (patch) | |
tree | 6079d6fb66d90ffbe8c1623525bb86829c162459 /vendor/github.com/golang/geo/s2/distance_target.go | |
parent | [chore] Add interaction policy gtsmodels (#3075) (diff) | |
download | gotosocial-cde2fb6244a791b3c5b746112e3a8be3a79f39a4.tar.xz |
[feature] support processing of (many) more media types (#3090)
* initial work replacing our media decoding / encoding pipeline with ffprobe + ffmpeg
* specify the video codec to use when generating static image from emoji
* update go-storage library (fixes incompatibility after updating go-iotools)
* maintain image aspect ratio when generating a thumbnail for it
* update readme to show go-ffmpreg
* fix a bunch of media tests, move filesize checking to callers of media manager for more flexibility
* remove extra debug from error message
* fix up incorrect function signatures
* update PutFile to just use regular file copy, as changes are file is on separate partition
* fix remaining tests, remove some unneeded tests now we're working with ffmpeg/ffprobe
* update more tests, add more code comments
* add utilities to generate processed emoji / media outputs
* fix remaining tests
* add test for opus media file, add license header to utility cmds
* limit the number of concurrently available ffmpeg / ffprobe instances
* reduce number of instances
* further reduce number of instances
* fix envparsing test with configuration variables
* update docs and configuration with new media-{local,remote}-max-size variables
Diffstat (limited to 'vendor/github.com/golang/geo/s2/distance_target.go')
-rw-r--r-- | vendor/github.com/golang/geo/s2/distance_target.go | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/vendor/github.com/golang/geo/s2/distance_target.go b/vendor/github.com/golang/geo/s2/distance_target.go deleted file mode 100644 index 066bbacfa..000000000 --- a/vendor/github.com/golang/geo/s2/distance_target.go +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2019 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package s2 - -import ( - "github.com/golang/geo/s1" -) - -// The distance interface represents a set of common methods used by algorithms -// that compute distances between various S2 types. -type distance interface { - // chordAngle returns this type as a ChordAngle. - chordAngle() s1.ChordAngle - - // fromChordAngle is used to type convert a ChordAngle to this type. - // This is to work around needing to be clever in parts of the code - // where a distanceTarget interface method expects distances, but the - // user only supplies a ChordAngle, and we need to dynamically cast it - // to an appropriate distance interface types. - fromChordAngle(o s1.ChordAngle) distance - - // zero returns a zero distance. - zero() distance - // negative returns a value smaller than any valid value. - negative() distance - // infinity returns a value larger than any valid value. - infinity() distance - - // less is similar to the Less method in Sort. To get minimum values, - // this would be a less than type operation. For maximum, this would - // be a greater than type operation. - less(other distance) bool - - // sub subtracts the other value from this one and returns the new value. - // This is done as a method and not simple mathematical operation to - // allow closest and furthest to implement this in opposite ways. - sub(other distance) distance - - // chordAngleBound reports the upper bound on a ChordAngle corresponding - // to this distance. For example, if distance measures WGS84 ellipsoid - // distance then the corresponding angle needs to be 0.56% larger. - chordAngleBound() s1.ChordAngle - - // updateDistance may update the value this distance represents - // based on the given input. The updated value and a boolean reporting - // if the value was changed are returned. - updateDistance(other distance) (distance, bool) -} - -// distanceTarget is an interface that represents a geometric type to which distances -// are measured. -// -// For example, there are implementations that measure distances to a Point, -// an Edge, a Cell, a CellUnion, and even to an arbitrary collection of geometry -// stored in ShapeIndex. -// -// The distanceTarget types are provided for the benefit of types that measure -// distances and/or find nearby geometry, such as ClosestEdgeQuery, FurthestEdgeQuery, -// ClosestPointQuery, and ClosestCellQuery, etc. -type distanceTarget interface { - // capBound returns a Cap that bounds the set of points whose distance to the - // target is distance.zero(). - capBound() Cap - - // updateDistanceToPoint updates the distance if the distance to - // the point P is within than the given dist. - // The boolean reports if the value was updated. - updateDistanceToPoint(p Point, dist distance) (distance, bool) - - // updateDistanceToEdge updates the distance if the distance to - // the edge E is within than the given dist. - // The boolean reports if the value was updated. - updateDistanceToEdge(e Edge, dist distance) (distance, bool) - - // updateDistanceToCell updates the distance if the distance to the cell C - // (including its interior) is within than the given dist. - // The boolean reports if the value was updated. - updateDistanceToCell(c Cell, dist distance) (distance, bool) - - // setMaxError potentially updates the value of MaxError, and reports if - // the specific type supports altering it. Whenever one of the - // updateDistanceTo... methods above returns true, the returned distance - // is allowed to be up to maxError larger than the true minimum distance. - // In other words, it gives this target object permission to terminate its - // distance calculation as soon as it has determined that (1) the minimum - // distance is less than minDist and (2) the best possible further - // improvement is less than maxError. - // - // If the target takes advantage of maxError to optimize its distance - // calculation, this method must return true. (Most target types will - // default to return false.) - setMaxError(maxErr s1.ChordAngle) bool - - // maxBruteForceIndexSize reports the maximum number of indexed objects for - // which it is faster to compute the distance by brute force (e.g., by testing - // every edge) rather than by using an index. - // - // The following method is provided as a convenience for types that compute - // distances to a collection of indexed geometry, such as ClosestEdgeQuery - // and ClosestPointQuery. - // - // Types that do not support this should return a -1. - maxBruteForceIndexSize() int - - // distance returns an instance of the underlying distance type this - // target uses. This is to work around the use of Templates in the C++. - distance() distance - - // visitContainingShapes finds all polygons in the given index that - // completely contain a connected component of the target geometry. (For - // example, if the target consists of 10 points, this method finds - // polygons that contain any of those 10 points.) For each such polygon, - // the visit function is called with the Shape of the polygon along with - // a point of the target geometry that is contained by that polygon. - // - // Optionally, any polygon that intersects the target geometry may also be - // returned. In other words, this method returns all polygons that - // contain any connected component of the target, along with an arbitrary - // subset of the polygons that intersect the target. - // - // For example, suppose that the index contains two abutting polygons - // A and B. If the target consists of two points "a" contained by A and - // "b" contained by B, then both A and B are returned. But if the target - // consists of the edge "ab", then any subset of {A, B} could be returned - // (because both polygons intersect the target but neither one contains - // the edge "ab"). - // - // If the visit function returns false, this method terminates early and - // returns false as well. Otherwise returns true. - // - // NOTE(roberts): This method exists only for the purpose of implementing - // edgeQuery IncludeInteriors efficiently. - visitContainingShapes(index *ShapeIndex, v shapePointVisitorFunc) bool -} - -// shapePointVisitorFunc defines a type of function the visitContainingShapes can call. -type shapePointVisitorFunc func(containingShape Shape, targetPoint Point) bool |