본문으로 건너뛰기
토파즈6.0 · 출시 전
다운로드 →

문서 검색

명세 6.0

방향키로 결과를 고르고 Enter를 눌러 여세요.

API 이름, 진단 번호, 규칙 또는 프로젝트 주제를 입력하세요.

    라이브러리 · std.typeset

    Length.toScaledPoints for Pt

    Converts a physical length to its integer scaled-point representation.

    toScaledPoints() -> int
    수신자
    Length<Pt>
    최소 인자 수
    0
    최대 인자 수
    0

    Declaration and parameters

    링크

    사용 조건

    기본 포함 · 미정

    Import std.typeset in language mode 5.21.

    The current compiler selects std/typeset.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    수신자

    Length<Pt>

    매개변수 제약

    Physical Length values with the Pt, Mm, Cm, or In marker provide toScaledPoints returning int. One point is 65,536 scaled points. The result is the exact stored signed 64-bit count.

    The scaledPoints member is absent from every Length type. Calling that removed member is rejected with TPZ5006. Length<Em> has no toScaledPoints member and must resolve to a physical length first.

    fromScaledPoints accepts every int from -9223372036854775808 through 9223372036854775807 inclusive. It returns Length<Pt> with that exact scaled-point count. Zero and negative inputs are valid. Construction performs no rounding and has no value-dependent failure.

    fromMilliPoints interprets its int argument as thousandths of a point. Its scaled-point result is roundEven of the exact rational input times 8192 divided by 125.

    fromMilliPoints accepts -140737488355328000 through 140737488355327999 inclusive. An input outside that range stops with runtime diagnostic TPZ4004. It does not return Result, wrap, saturate, or clamp.

    Length<Pt>.toMilliPoints returns roundEven of the exact stored count times 125 divided by 8192. Every representable point length has a representable int result.

    roundEven selects the nearest integer and chooses the even integer at an exact tie. Positive and negative ties follow the same rule. Range checking applies to the final rounded value. Intermediate arithmetic must preserve the exact rational value.

    A count of 4096 scaled points converts to 62 millipoints. A count of 12288 converts to 188. Their negatives convert to -62 and -188. One millipoint constructs 66 scaled points and negative one constructs -66.

    Millipoint conversion can lose scaled-point precision. A conversion to millipoints and back need not recover the original length. The maximum point length converts to 140737488355328000 millipoints, which exceeds the fromMilliPoints input range.

    The constructors require int arguments. A float or Length argument is rejected with TPZ5001. Physical conversions and scalar arithmetic do not provide an implicit integer constructor.

    A constructor evaluates its argument once before checking the result range. A receiver conversion evaluates its receiver once. These operations perform no I/O or mutation and read no font or paragraph state.

    A fromMilliPoints overflow is reported at the public constructor call. Earlier argument effects remain visible and later expressions do not execute.

    결과

    The declared result type is int.

    효과

    실패

    Result and effects

    링크

    Return the exact signed scaled-point count. Every stored physical value is valid and one point contains 65,536 scaled points. The conversion performs no rounding and has no value-dependent failure.

    Why

    링크

    Integer conversions use the same to prefix as unit conversions and collection conversions. Scaled points and millipoints remain distinct because they represent different units and rounding boundaries.

    Related entries

    링크

    std.typeset →

    Convert physical lengths with toScaledPoints

    링크
    규칙topaz.stdlib.contract.to-scaled-points.rule

    Convert physical lengths with toScaledPoints

    Physical Length values with the Pt, Mm, Cm, or In marker provide toScaledPoints returning int. One point is 65,536 scaled points. The result is the exact stored signed 64-bit count.

    The scaledPoints member is absent from every Length type. Calling that removed member is rejected with TPZ5006. Length<Em> has no toScaledPoints member and must resolve to a physical length first.

    fromScaledPoints accepts every int from -9223372036854775808 through 9223372036854775807 inclusive. It returns Length<Pt> with that exact scaled-point count. Zero and negative inputs are valid. Construction performs no rounding and has no value-dependent failure.

    fromMilliPoints interprets its int argument as thousandths of a point. Its scaled-point result is roundEven of the exact rational input times 8192 divided by 125.

    fromMilliPoints accepts -140737488355328000 through 140737488355327999 inclusive. An input outside that range stops with runtime diagnostic TPZ4004. It does not return Result, wrap, saturate, or clamp.

    Length<Pt>.toMilliPoints returns roundEven of the exact stored count times 125 divided by 8192. Every representable point length has a representable int result.

    roundEven selects the nearest integer and chooses the even integer at an exact tie. Positive and negative ties follow the same rule. Range checking applies to the final rounded value. Intermediate arithmetic must preserve the exact rational value.

    A count of 4096 scaled points converts to 62 millipoints. A count of 12288 converts to 188. Their negatives convert to -62 and -188. One millipoint constructs 66 scaled points and negative one constructs -66.

    Millipoint conversion can lose scaled-point precision. A conversion to millipoints and back need not recover the original length. The maximum point length converts to 140737488355328000 millipoints, which exceeds the fromMilliPoints input range.

    The constructors require int arguments. A float or Length argument is rejected with TPZ5001. Physical conversions and scalar arithmetic do not provide an implicit integer constructor.

    A constructor evaluates its argument once before checking the result range. A receiver conversion evaluates its receiver once. These operations perform no I/O or mutation and read no font or paragraph state.

    A fromMilliPoints overflow is reported at the public constructor call. Earlier argument effects remain visible and later expressions do not execute.

    이유

    Integer conversions use the same to prefix as unit conversions and collection conversions. Scaled points and millipoints remain distinct because they represent different units and rounding boundaries.

    Convert every physical length unit to scaled points

    링크
    main.tpzConvert every physical length unit to scaled points플레이그라운드 열기 →
    1. import std.io
    2. import std.typeset as ts
    3. let pt = (1pt).toScaledPoints()
    4. let mm = (25.4mm).toScaledPoints()
    5. let cm = (2.54cm).toScaledPoints()
    6. let inch = (1in).toScaledPoints()
    7. io.writeLine("{pt}|{mm}|{cm}|{inch}|{ts.fromScaledPoints(pt) == 1pt}")
    기대 출력종료 코드 0
    65536|4718592|4718592|4718592|true
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. 65536|4718592|4718592|4718592|true

    Keep the millipoint conversion boundary

    링크
    main.tpzKeep the millipoint conversion boundary플레이그라운드 열기 →
    1. import std.io
    2. import std.typeset as ts
    3. let tie = ts.fromScaledPoints(4096).toMilliPoints()
    4. let rounded = ts.fromMilliPoints(1) == ts.fromScaledPoints(66)
    5. io.writeLine("{tie}|{rounded}")
    기대 출력종료 코드 0
    62|true
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. 62|true

    Reject scaledPoints on `Length<Pt>`

    링크
    main.tpzReject scaledPoints on `Length<Pt>`플레이그라운드 열기 →
    1. let distance = 1pt
    2. distance.scaledPoints()
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    • TPZ5006 →

      stdlib-removed-scaled-points at main.tpz:2:10

    Reject scaledPoints on `Length<Mm>`

    링크
    main.tpzReject scaledPoints on `Length<Mm>`플레이그라운드 열기 →
    1. let distance = 1mm
    2. distance.scaledPoints()
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    • TPZ5006 →

      stdlib-removed-scaled-points at main.tpz:2:10

    Reject scaledPoints on `Length<Cm>`

    링크
    main.tpzReject scaledPoints on `Length<Cm>`플레이그라운드 열기 →
    1. let distance = 1cm
    2. distance.scaledPoints()
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    • TPZ5006 →

      stdlib-removed-scaled-points at main.tpz:2:10

    Reject scaledPoints on `Length<In>`

    링크
    main.tpzReject scaledPoints on `Length<In>`플레이그라운드 열기 →
    1. let distance = 1in
    2. distance.scaledPoints()
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    • TPZ5006 →

      stdlib-removed-scaled-points at main.tpz:2:10

    Resolve font-relative lengths before integer conversion

    링크
    main.tpzResolve font-relative lengths before integer conversion플레이그라운드 열기 →
    1. let distance = 1em
    2. distance.toScaledPoints()
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    • TPZ5006 →

      stdlib-unresolved-em-scaled-points at main.tpz:2:10

    Read both endpoints of the exact integer representation

    링크
    main.tpzRead both endpoints of the exact integer representation플레이그라운드 열기 →
    1. import std.typeset as ts
    2. import std.io
    3. let low = ts.fromScaledPoints(-9223372036854775808).toScaledPoints()
    4. let high = ts.fromScaledPoints(9223372036854775807).toScaledPoints()
    5. io.writeLine("{low}|{high}")
    기대 출력종료 코드 0
    -9223372036854775808|9223372036854775807
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. -9223372036854775808|9223372036854775807

    Construct the millipoint endpoints and keep signed rounding

    링크
    main.tpzConstruct the millipoint endpoints and keep signed rounding플레이그라운드 열기 →
    1. import std.typeset as ts
    2. import std.io
    3. let low = ts.fromMilliPoints(-140737488355328000)
    4. let high = ts.fromMilliPoints(140737488355327999)
    5. let negative = ts.fromMilliPoints(-1)
    6. let lowGrid = ts.fromScaledPoints(-9223372036854775808).toMilliPoints()
    7. let highGrid = ts.fromScaledPoints(9223372036854775807).toMilliPoints()
    8. io.writeLine("{low == -140737488355328pt}|{high == ts.fromScaledPoints(9223372036854775742)}|{negative == ts.fromScaledPoints(-66)}")
    9. io.writeLine("{lowGrid}|{highGrid}")
    기대 출력종료 코드 0
    true|true|true
    -140737488355328000|140737488355328000
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. true|true|true
    2. -140737488355328000|140737488355328000

    Round both signs and both sides of a millipoint tie

    링크
    main.tpzRound both signs and both sides of a millipoint tie플레이그라운드 열기 →
    1. import std.typeset as ts
    2. import std.io
    3. let below = ts.fromScaledPoints(4095).toMilliPoints()
    4. let tie = ts.fromScaledPoints(4096).toMilliPoints()
    5. let above = ts.fromScaledPoints(4097).toMilliPoints()
    6. let negativeBelow = ts.fromScaledPoints(-4095).toMilliPoints()
    7. let negativeTie = ts.fromScaledPoints(-4096).toMilliPoints()
    8. let negativeAbove = ts.fromScaledPoints(-4097).toMilliPoints()
    9. let upperTie = ts.fromScaledPoints(12288).toMilliPoints()
    10. let negativeUpperTie = ts.fromScaledPoints(-12288).toMilliPoints()
    11. io.writeLine("{below}|{tie}|{above}|{negativeBelow}|{negativeTie}|{negativeAbove}|{upperTie}|{negativeUpperTie}")
    기대 출력종료 코드 0
    62|62|63|-62|-62|-63|188|-188
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. 62|62|63|-62|-62|-63|188|-188

    Reject a millipoint input above the representable range

    링크
    main.tpzReject a millipoint input above the representable range플레이그라운드 열기 →
    1. import std.typeset as ts
    2. ts.fromMilliPoints(140737488355328000)
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 run. 종료 코드가 0이 아닙니다.

    • TPZ4004 →

      stdlib-length-unrepresentable at main.tpz:2:1

    Reject a millipoint input below the representable range

    링크
    main.tpzReject a millipoint input below the representable range플레이그라운드 열기 →
    1. import std.typeset as ts
    2. ts.fromMilliPoints(-140737488355328001)
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 run. 종료 코드가 0이 아닙니다.

    • TPZ4004 →

      stdlib-length-unrepresentable at main.tpz:2:1

    Require an int for fromScaledPoints

    링크
    main.tpzRequire an int for fromScaledPoints플레이그라운드 열기 →
    1. import std.typeset as ts
    2. ts.fromScaledPoints(1.0)
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    Require an int for fromMilliPoints

    링크
    main.tpzRequire an int for fromMilliPoints플레이그라운드 열기 →
    1. import std.typeset as ts
    2. ts.fromMilliPoints(1.0)
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    Diagnostics

    링크

    Unknown member or field →

    Integer overflow →

    TPZ5001 →

    메뉴

    다운로드 →