1. Java / Говнокод #26976

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /**
         * Change the zoom level to the specified value. Specify 0.0 to reset the
         * zoom level.
         *
         * @param zoomLevel The zoom level to be set.
         */
        public void setZoomLevel(double zoomLevel);

    Когда-то я думал, что zoom 100% это 1.0. И что на zoom нужно умножать. Но оказалось, что я анскильный.

    Запостил: DypHuu_niBEHb, 24 Сентября 2020

    Комментарии (23) RSS

    • питухи, а вы как думаете?
      Ответить
    • А тут 1.0 что означает?
      Ответить
      • интуитивно кажется, что раза в полтора всё стало больше:)

        Это CEF.
        Ответить
        • 1.2 ** zoomLevel

          Какая экспонента )))
          Ответить
          • Значит, чтобы увеличить изображение в два раза, мне нужно указать zoomLevel = 3.8?
            Ответить
            • Дяденька, я сварщик то не настоящий, формулу на помойке нагуглил.
              Ответить
              • А где, кстати? В комментариях этого факта нет, в исходниках тоже не нашёл (там функция делегирует свои полномочия другой функции и так по цепочке).
                Ответить
                • На стековерфлоу какой-то чувак запостил.

                  > в исходниках

                  Да оно поди в недра хрома уходит?
                  Ответить
                  • Нашёл:
                    https://github.com/chromium/chromium/blob/55f44515cd0b9e7739b434d1c62f4b7e321cd530/third_party/blink/public/web/web_view.h#L191

                    // Zoom ----------------------------------------------------------------
                    
                    // Returns the current zoom level.  0 is "original size", and each increment
                    // above or below represents zooming 20% larger or smaller to default limits
                    // of 300% and 50% of original size, respectively.  Only plugins use
                    // non whole-numbers, since they might choose to have specific zoom level so
                    // that fixed-width content is fit-to-page-width, for example.
                    virtual double ZoomLevel() = 0;


                    Угу, основание равно 1,2. Причём там ещё лимит: нельзя зожать более, чем в два раза, и розжать более, чем в три раза.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • 2.0 это на 44% (на 20% и потом ещё на 20%)
                        0.9 это на 17.8%
                        Ответить
                        • то есть если я хочу увеличиться в полтора раза, то мне нужно ехать в ращ-ку за математиком?

                          да не, так-то макака понял. 20% от 120 это 24, потому и вот.

                          но конечно пиздец
                          Ответить
                          • К сожалению да. Без ло-га-риф-мов тут никак. 2.224 для 1.5х
                            Ответить
                            • а дробная хуня работает только для плагинов, сиречь 40% не получить никак, ку?

                              надо запустить и проверить конечно
                              Ответить
                              • Через гуйню - нет наверное. Здесь это скорее всего имелось в виду, а не то что ты программно не можешь.
                                Ответить
                                • уф)
                                  как-то так, да?
                                  from math import log, pow
                                  
                                  
                                  def percent_by_zoom(zoom):
                                      return 120 * pow(1.2, zoom - 1)
                                  
                                  
                                  def zoom_by_percent(percent):
                                      return log(percent / 120, 1.2) + 1


                                  блядь, геометрическую прогрессию же в школе еще проходили.. Вот что значит, быть мокакой
                                  Ответить
                                  • Эм, а почему не просто 100 * pow(1.2, zoom) и log(percent/100.0, 1.2)?
                                    Ответить
                                    • ну потому что первый член прогрессии 120 (почему то я посчитал с 1.0, лол), вот я и сделал влоб, я же макака

                                      но ты прав, можно считать его равным 100, и тогда убрать мусор

                                      Не факт кстати, что в моем языке есть log с основанием, может придется делать натуральный лог от числа и основания и делить вроде
                                      Ответить
                                  • Переведи на "PHP".
                                    Ответить
                                    • $percent = 100 * pow(1.2, $zoom)
                                      $zoom = log($percent/100.0, 1.2)
                                      Ответить
                                      • Вот теперь мои трусики мокренькие, как и положено. Кстати, обратили внимание, насколько компактнее выглядит код на "PHP" по сравнению с кодом на том языке? И без ебучих отступов.
                                        Ответить
    • Может, всё что <= 0 - это reset. 1.0 тоже reset.
      Ответить

    Добавить комментарий